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 dockerid XXXXX/centos-vim
现在我们就有了安装了vim之后的centos镜像
自定义镜像和原始镜像之间的关系
2. Dockerfile创建镜像
使用Dockerfile是更推荐的方式,这样可以让使用者更清晰地看到这个镜像的制作细节
创建对应的目录
mkdir centos-vim
编写Dockerfile文件
FROM centos:7
RUN yum install -y vim
docker build
docker build -t XXXXX/centos-vim2 .
过程解析
docker镜像是只读的,这里为什么能够在centos镜像的基础上进行自定义操作呢?
我们看一下docker的编译过程
编译的第一步(绿色边框)会复用之前已经存在的centos:7
重点是第二步
882832c2b8eb其实是在centos:7镜像的基础上生成的一个临时container的id
我们忽略vim的安装过程,跳到最后
最后根据临时生成的container来docker commit 生成镜像文件,最后删除临时container