Docker关键概念阐述
要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image、container、service、swarm、stack等。
在介绍这几个概念时,会使用到一个测试环境,这个测试环境是一个由一台manager和一台worker构成的swarm,并且在两个node上都部署了weilu2/myrep:demo1这个镜像,只在manager这个node上部署了dockersamples/visualizer这个镜像。
Image
Image是一个轻量级的,独立的,可执行的包,其中包含了运行一个程序所必须的所有内容,包括代码,运行环境,类库,环境变量以及配置文件等。
使用命令可以查看所有的image:
docker images
结果:
REPOSITORY TAG IMAGE ID CREATED SIZE
friendlyhello latest a0a4a49f2713 hours ago 150MB
weilu2/myrep demo1 a0a4a49f2713 hours ago 150MB
python 2.7-slim a15e375b7949 hours ago 138MB
hello-world latest 05a3bd381fc2 weeks ago .84kB
dockersamples/visualizer <none> 8dbf7c60cf88 months ago 148MB
Container
一个container是image的一个运行时实例,当image在内存中执行时就被称为container。
使用命令可以查看所有的container:
docker container ls
结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
739543688d4b dockersamples/visualizer:stable "npm start" hours ago Up hours /tcp stlab_visualizer..fg2b1hqvnj2mq3m9w45yuz6kn
bf9303546953 weilu2/myrep:demo1 "python app.py" hours ago Up hours /tcp stlab_web..0h9g8d449c63uz06gf3ugcy21
16fb0dea04cb weilu2/myrep:demo1 "python app.py" hours ago Up hours /tcp stlab_web..hkpsnerqii2kgp880ln5l1n8v
通过观察结果可以发现,image部署在每一个node上就会形成一个container,因此可以理解为container是只在单个node上运行的image。
Service
一个服务是指程序其中的一个部分,比如对于一个大型应用来说,文件存储作为一个单独的服务提供使用,一个服务可以包含若干个container,服务的规模是可以伸缩的。
可以使用命令查看Service:
docker service ls
结果:
ID NAME MODE REPLICAS IMAGE PORTS
thz266xdqokf stlab_visualizer replicated / dockersamples/visualizer:stable *:->/tcp
agqm6iq2jtlu stlab_web replicated / weilu2/myrep:demo1 *:->/tcp
通过对比前面的image、container以及这个service的结果,可以发现其三者之间的关系,一个service实际上是指一个image运行的所有container的总称。不管这个image运行在多少个node上。
Swarm
Swarm是指一组运行着docker的机器构成的集群。在一个swarm中包含若干个Node(节点),其中有一个swarm manager节点,作为管理整个swarm的存在,其余还有若干个节点作为worker存在。
一台机器同一时间只能存在于一个swarm中。
Node
Swarm中的机器被称为节点,可以使用命令查看:
docker node ls
结果:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
w0mk0httmn11nencbmw9yk0xp * centos7- Ready Active Leader
yn8btfa3qvcozwcneh15hh9ju centos7- Ready Active
其中centos7-1是manager,根据后面的标识可以看出来。管理swarm的所有命令必须在manager这个节点上执行才有效果,包括该条命令。
Stack
Stack是指一组共享依赖的相关的服务。
可以使用命令查看stack:
docker stack ls
结果:
NAME SERVICES
stlab
根据这个结果可以看到这个stack中包含两个services,实际上就是上面使用service ls命令查看到的两个service。
使用命令可以查看某个stack下包含的service:
docker stack services stlab
最后一个参数是指stack的名字,结果如下:
ID NAME MODE REPLICAS IMAGE PORTS
agqm6iq2jtlu stlab_web replicated / weilu2/myrep:demo1 *:->/tcp
thz266xdqokf stlab_visualizer replicated / dockersamples/visualizer:stable *:->/tcp
Task
Task是指在service中运行的一个container。可以使用命令查看某个stack下的task:
docker stack ps stlab
结果:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
moi9ubcbq6j9 stlab_web. weilu2/myrep:demo1 centos7- Running Running hours ago
fg2b1hqvnj2m stlab_visualizer. dockersamples/visualizer:stable centos7- Running Running hours ago
pu2ax0o6rq5f \_ stlab_visualizer. dockersamples/visualizer:stable centos7- Shutdown Rejected hours ago "No such image: dockersamples/…"
l6peeaqkufkm stlab_web. weilu2/myrep:demo1 centos7- Running Running hours ago
hkpsnerqii2k stlab_web. weilu2/myrep:demo1 centos7- Running Running hours ago
0h9g8d449c63 stlab_web. weilu2/myrep:demo1 centos7- Running Running hours ago
jo9c0fld9foq stlab_web. weilu2/myrep:demo1 centos7- Running Running hours ago
Docker关键概念阐述的更多相关文章
- Docker教程:docker的概念及安装
http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...
- 后端技术杂谈9:先搞懂Docker核心概念吧
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 菜鸟系列docker——docker基本概念(1)
docker基本概念 1.准备 这里先介绍容器技术,后续再介绍docker.docker是容器的一种,除docker以外,还存在coreos.不过在当前趋势下容器和docker基本上可以划为等号了. ...
- docker核心概念(镜像、容器、仓库)及基本操作
概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容 ...
- Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...
- Kafka学习之(一)了解一下Kafka及关键概念和处理机制
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据.优势 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做 ...
- Docker 基础概念科普 和 常用操作介绍
Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...
- 【NS-3学习】ns3-模拟基础:关键概念,日志,命令行参数
前言 本篇博客先介绍在仿真过程中会使用到的一些关键概念,然后介绍便于调试仿真脚本的常用技术:日志.命令行参数. 关键概念 节点 在因特网术语中,主机(终端)是指任何一台连接到网络的计算设备.ns-3并 ...
- Docker基本概念及架构
一.Docker基本概念 Docker是一个开源的容器引擎,基于Go 语言并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...
随机推荐
- go语言入门(4)函数
1,函数的定义格式 函数构成代码执行的逻辑结构.在Go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句. Go 语言函数定义格式如下 func FuncName(/ ...
- zookeeper配置文件说明
zoo.cfg #zoo.cfg 的内容 # 心跳检查的时间 2秒 tickTime=2000 # 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒 initLimit=10 # ZK Le ...
- Linux 下幾種網芳/Samba 目錄的 mount 方式
Linux 下幾種網芳/Samba 目錄的 mount 方式,比較新的 Smaba 只能用 cifs 的 mount 方式. [smbmount] smbmount -o username=&qu ...
- STM32 ARM调试问题总结
文章转载自:http://xfjane.spaces.eepw.com.cn/articles/article/item/77908 基于ADS的ARM调试有关问题总结 1. 在添加文件的过程中你可 ...
- 论文笔记:Unsupervised Domain Adaptation by Backpropagation
14年9月份挂出来的文章,基本思想就是用对抗训练的方法来学习domain invariant的特征表示.方法也很只管,在网络的某一层特征之后接一个判别网络,负责预测特征所属的domain,而后特征提取 ...
- 修改虚拟机CentOS系统ip地址和主机名
按照教程安装了虚拟机但是未配置静态IP,所以导致IP地址经常变化,CRT,mysql等连接时经常出现问题. 所以修改虚拟机内CentOS系统的IP为静态IP. 一.查看当前网关 虚拟机-->[编 ...
- PTA ”写出这个数“
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10的100次方. 输出格式: 在 ...
- IntelliJ IDEA 如何设置代码提示和代码模板
在编写java代码时如何设置不分大小写提示和设置快捷输出模板代码 首先设置不分大小写,settings-Editor-General-CodeCompletion 将红框的Match case取消打勾 ...
- LIBUSB_TRANSFER_ERROR
首先, 我的设备是一个KNX无线接受模块, 利用UART与主机相连, 看到的设备就是ttyUSBx 利用libusb写了一个程序, 调用同步I/O 的API, 即libusb_bulk_transfe ...
- Python的在线编辑环境
另外,再提供几个Python的在线编辑环境,可以直接写代码并且运行的环境. 在线Python实验室:http://www.pythoner.cn/labs/ 在线Python编辑器:http://ww ...