设为首页 收藏本站
查看: 1143|回复: 0

[经验分享] Docker架构与工作流程

[复制链接]

尚未签到

发表于 2019-2-20 09:11:15 | 显示全部楼层 |阅读模式
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 查看镜像在启动时,默认执行的命令,比如





10. 在创建镜像时,改变原来镜像默认运行的命令,修改原有镜像的基础命令,修改其中的cmd指令:
docker commit -a "jaywin.com" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 jaywin/httpd:v0.2
11. 运行0.2镜像:





12. 验证:





docker container inspect t2






镜像推送

1. 登录到服务器上





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






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674674-1-1.html 上篇帖子: 修改Docker本地镜像与容器的存储位置的方法 下篇帖子: docker创建centos镜像无法使用systemctl
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表