Docker架构与工作流程

Docker架构分为:

  1. docker host:运行docker daemon的主机
  2. docker client:对容器进行create…

一个host可以启动多个容器,基于镜像可在容器中启动不同的应用。如果本地无此镜像,docker可自动连接到docker registry上下载镜像,存储到本地/文件系统(overlay2)中。

镜像本身是只读的,仓库名就是应用程序名。而仓库内是同一应用程序的不同版本,使用标签来识别之后。

Docker是码头工人的意思,而镜像可形象理解为应用程序的集装箱,码头工人docker负责装卸集装箱(image/application)。

Docker镜像

比如,在底层纯净的发行版之上,添加一个emacs层,这是一个独立的层,如果需要额外的工具则需要在上面执行安装操作比如安装vim,安装后可理解为附加了一层vim的层级,该层级仅仅包含了vim。然后可再添加一个独立的层级如apache。当启动apache时,从下往上挂载叠加,并且三层都是只读的。如果需要读写操作,则在最上层容器的自有层次(container)进行,而其他层次是共享的。

一旦启动完成,最底下的层(kernel)也将被移除。如果删除容器,则容器自有的可写层也被删除。

镜像的分成构建和联合挂载,依赖专有的文件系统支撑。

其中overlay2是二层抽象文件系统,需要底层文件系统支持(XFS)
Docker registry

镜像的统一存储位置。构建镜像时,需要一个统一存储的位置。当启动镜像时,docker daemon先从本地获取镜像,如果本地不存在镜像则到registry中下载镜像并保存到本地。如果没有指定镜像地址,则到docker hub中获取。

一般而言,需要二次定制镜像以符合自身业务需求。

Registry的组成部分:repository(一大堆仓库)  index(一个索引)

运维人员可将镜像pull到特定的环境部署,比如UAT (用户验收测试)环境,Promote环境,Production环境。

 

第三方镜像仓库

https://quay.io/

镜像制作

获取flannel镜像,默认通过443端口拉取:

方法:启动一个容器,在容器之上做好自己需要的配置,然后通过docker commit制作镜像。

如:将busybox 加上html目录和index.html,将此结果做成镜像。日后每次启动有会存在此文件。

1.安装docker服务,并启动:

yum install docker –y

systemctl start docker

2.拉取busybox镜像:

docker pull busybox

3.启动容器:

4.提交

5.打上标签

6.可以为一个镜像打上多个标签:

7.删除一个镜像,仅删除了指定标签的镜像:

8.也能在做镜像的同时,打上标签

9.docker inspect busy 查看镜像在启动时,默认执行的命令,比如

  1. 10.在创建镜像时,改变原来镜像默认运行的命令,修改原有镜像的基础命令,修改其中的cmd指令:

docker commit -a "jaywin.com" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 jaywin/httpd:v0.2

  1. 运行0.2镜像:

  1. 验证:

docker container inspect t2

 

镜像推送

  1. 登录到服务器上

  1. 本地镜像的名字,必须和docker hub中保持一致

 

国内访问比较快的镜像地址,是阿里云

https://dev.aliyun.com/

登录自己的账号,获得自己专用的加速地址,写入到daemon.json中重启docker后生效

 

可以根据操作指南,将镜像托管到阿里云:

  1. docker login --username=15088132158 registry.cn-hangzhou.aliyuncs.com
  2. docker tag 9bc68d7b4d76 registry.cn-hangzhou.aliyuncs.com/jaywinz/httpd:v0.1-1
  3. docker push registry.cn-hangzhou.aliyuncs.com/jaywinz/httpd

推送镜像时,如果不是dockerhub,则必须加上服务器地址,名称空间和标签

 

镜像的导入和导出

在已有镜像的基础上,打包镜像。然后在另外的机上解压直接使用。

比如:

  1. docker save -o myimages.gz jaywin/httpd:v0.1-1 jaywinz/httpd:v0.2-1
  2. docker load -i myimages.gz

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值