创建docker镜像的两种方式

160 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。


这里写图片描述

1. docker commit方式

检查一下已有镜像和容器

docker images

这里写图片描述

docker container ls

这里写图片描述

这里我们选择对centos进行自定义镜像

交互式运行centos容器

docker run -it centos

由此我们进入了centos容器

这里写图片描述

运行后发现,官方提供的centos镜像中并没有提供vim工具,这里我们选择对centos镜像增添vim工具,最后生成我们自定义的镜像

这里写图片描述

centos容器中安装vim工具

yum install vim

这里写图片描述

vim安装成功

退出centos交互式程序

exit

这里写图片描述

现在我们就有了一个经过我们自定义的container 这里写图片描述

根据自定义的centos容器生成image

docker commit a68c0 chanmufeng/centos-vim

现在我们就有了安装了vim之后的centos镜像 这里写图片描述

自定义镜像和原始镜像之间的关系

这里写图片描述

2. Dockerfile创建镜像

使用Dockerfile是更推荐的方式,这样可以让使用者更清晰地看到这个镜像的制作细节

创建对应的目录

mkdir centos-vim

编写Dockerfile文件

FROM centos:7
RUN yum install -y vim

docker build

docker build -t chanmufeng/centos-vim2 .

这里写图片描述

过程解析

docker镜像是只读的,这里为什么能够在centos镜像的基础上进行自定义操作呢? 我们看一下docker的编译过程

这里写图片描述 编译的第一步(绿色边框)会复用之前已经存在的centos:7

重点是第二步

882832c2b8eb其实是在centos:7镜像的基础上生成的一个临时container的id 我们忽略vim的安装过程,跳到最后

这里写图片描述

最后根据临时生成的container来docker commit 生成镜像文件,最后删除临时container(对照博客开始的图示进行理解)