四、Docker-构建自己的Docker镜像

准备工作

一台虚拟机
一个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