云服务器

Docker架构与工作流程

2019-11-27 17:23:50 187

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 查看镜像在启动时,默认执行的命令,比如


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

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


运行0.2镜像:

验证:


docker container inspect t2


镜像推送

登录到服务器上


本地镜像的名字,必须和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


————————————————


睿江云官网链接:https://www.eflycloud.com/home?from=RJ0032


上一篇: 无

微信关注

获取更多技术咨询