Docker镜像制作

Docker镜像

在底层纯净的发行版之上,添加一个emacs层,这是一个独立的层,如果需要额外的工具则需要在上面执行安装操作比如安装vim,安装后可理解为附加了一层vim的层级,该层级仅仅包含了vim。然后可再添加一个独立的层级如apache。当启动apache时,从下往上挂载叠加,并且三层都是只读的。如果需要读写操作,则在最上层容器的自有层次(container)进行,而其他层次是共享的。
一旦启动完成,最底下的层(kernel)也将被移除。如果删除容器,则容器自有的可写层也被删除。
镜像的分成构建和联合挂载,依赖专有的文件系统支撑。
文件系统
早期,使用的专有文件系统为AUFS。而aufs的前身为unionFS,其代码很烂,因此当它申请到内核代码树时被拒绝。因此如果需要使用aufs,则自行打补丁。而对于以稳定著称的redhat/CentOS而言是不允许使用aufs的。Ubuntu是允许将aufs打包到内核中去,并且它也已经直接提供打好补丁的内核。故而早期如果要使用docker,只能使用ubuntu。
而overlayfs,也可以通过打补丁或者装载内核模块的方式,让CentOS使用。
Docker还支持dm,不过它性能和稳定性很差,因此不再使用。早期CentOS7使用的是devicemapper,而新版的Docker中,CentOS7装的是overlay2。
在这里插入图片描述
其中overlay2是二层抽象文件系统,需要底层文件系统支持(XFS)

Docker registry

镜像的统一存储位置。构建镜像时,需要一个统一存储的位置。当启动镜像时,docker daemon先从本地获取镜像,如果本地不存在镜像则到registry中下载镜像并保存到本地。如果没有指定镜像地址,则到docker hub中获取。
一般而言,需要二次定制镜像以符合自身业务需求。
Registry的组成部分:repository(一大堆仓库) index(一个索引)

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

Cloud Native 云原生

传统意义上,程序员的程序是针对某个开发环境而写的,针对系统库和编程接口来生成自己的代码,称为系统原生。
如果面向云环境开发的程序,调用云环境提供的接口,为了在云环境上而运行的程序,称为云原生。
容器或者云,是封装好的,不方便修改里面的文件,因此可以通过环境变量赋值的方式来向容器传递信息。而且是当配置文件启动时,从环境变量自动加载并注入到容器中生成的。因此,可以通过环境变量来配置容器的启动。

Docker hub

镜像的制作一般基于基础镜像(base image)来做的,而base image一般是docker hub官方手动制作的。
默认情况下,docker daemon是从docker hub上pull镜像的,并且能存放用户的第三方镜像。

第三方镜像仓库

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/

镜像的导入和导出

在已有镜像的基础上,打包镜像。然后在另外的主机上解压直接使用。
比如:
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=RJ0024

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值