只用Dockerfile中的其他更改重build相同的Docker镜像

我使用Dockerfile构build一个docker镜像。 在构build镜像之后,我对Dockerfile做了一些基本的修改。 是否有可能重build只有其他更改相同的图像。 因为创build图像需要很长时间,所以我不想完全构build它。 提前致谢。

所有的docker工人都会按照你所描述的方式进行工作。

唯一需要考虑的是层依赖关系。

考虑Dockerfile

FROM something RUN cmd1 RUN cmd2 RUN cmd3 RUN cmd4 

如果你改变了cmd1那么所有的图层都将被重build,因为它们可能与cmd1不同
如果你改变cmd4 ,只有这个命令会被重build,因为它不会影响任何其他的图层。

想想哪些命令需要按照什么顺序运行 – 也许你可以通过重新排列语句来改进它。

是的,如果你标记你的docker image myimage,只需启动你的其他Dockerfile

FROM myimage

并在此之后添加更多的更改

您无法用更改重build它,您需要将永久性数据存储在卷上。

为了保存你的改变,你可以使用commit

https://docs.docker.com/engine/reference/commandline/commit/

从容器的更改中创build一个新的图像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

将容器的文件更改或设置提交到新映像可能会很有用。 这允许您通过运行交互式shell来debugging容器,或者将工作数据集导出到其他服务器。 一般来说,最好使用Dockerfiles来以可logging和可维护的方式pipe理你的图像。 阅读更多关于有效的图像名称和标签。

提交操作将不包含容器内安装的卷中包含的任何数据。

默认情况下,提交的容器及其进程将在图像提交时暂停。 这可以降低创build提交过程中遇到数据损坏的可能性。