构建过程
(1)从基础镜像中运行一个容器
(2)执行一条指令,这条指令将会对容器进行修改
(3)对修改后的容器进行类似docker commit的操作,提交一个新的镜像层。
(4)基于新的镜像层运行一个新的容器
(5)执行dockerfile中的下一条指令,反复如此,直到所有的指令执行完毕。
注意:提交一个新的镜像层后,会将刚刚创建的容器进行删除。但是不会删除中间层创建的镜像。我们可以通过中间产生的镜像层运行新的容器对dockerfile构建镜像进行调试。
构建缓存
构建过程中,将之前构建的镜像看作缓存,使得之后的构建过程中如果使用的基础镜像相同并且执行的命令相同时就不进行构建,直接使用之前已经构建好的镜像(执行两次完全相同的构建命令能够看出效果),使得构建过程更加高效。
如何不使用缓存:
有些情况下不想使用缓存,比如构建命令中包含更新某些数据的命令时。希望每次docker都能够刷新数据,得到最新的版本。
1、使用docker build --no-cache
选项。
2、修改dockerfile中的部分命令,此修改的命令之后的构建将不再使用缓存。
查看镜像的构建过程
docker history [images]