准备工作
一台虚拟机
一个centos镜像
centos镜像中装了docker
需求:构建一个安装了vim的centos镜像
一、方法一
- 首先我们去pull一个centos
docker pull centos
- 然后运行centos
docker run -it centos
- 之后在centos容器中安装vim:
yum install -y vim
- 退出镜像exit,然后先查看镜像,根据镜像名称去构建image
docker commit nice_shockley tinner/centos-vim
至此,构建完毕。
但是此种方法有个弊端:我们是基于已经构建好的镜像去安装东西然后commit产生镜像的, 但是可能我们在安装的时候会产生一些不安全的因素,所以并不推荐用这种方法去构建镜像,因此我们大多数情况下还是推荐用方法二
二、方法二(通过Dockerfile文件)
- 首先我们创建一个Dockerfile文件:
FROM centos
RUN yum install -y vim
- 然后build:
docker build -t tinner/centos-vim .
三、原理
在build的时候,我们知道:image是只读的,不能在其之上进行读写,要想读写只能在其container之上,其实它底层用的也是方法一:我们在build之后观察控制台可以发现:
build控制台
在第二步开始的时候产生了一个临时的container的id,然后基于这个临时的container去进行安装vim,安装完成之后:
image.png
将这个临时的container移除掉之后又产生了一个随机的id,build成功之后将这个id作为新的image的id
网友评论