仅使用Dockerfile中的其他更改重建相同的docker镜像

时间:2016-07-27 12:38:23

标签: docker docker-image docker-build

我使用Dockerfile构建一个docker镜像。构建映像后,我对Dockerfile进行了一些基本的更改。是否可以仅使用其他更改重建相同的图像。因为创建图像需要很长时间,所以我不想完全构建它。提前谢谢。

3 个答案:

答案 0 :(得分:5)

所有的docker构建都以您描述的方式工作。

唯一需要考虑的是图层依赖性。

考虑Dockerfile

FROM something
RUN  cmd1
RUN  cmd2
RUN  cmd3
RUN  cmd4

如果您更改cmd1,则会重建所有图层,因为它们可能与cmd1相同 如果您更改cmd4,则只会重建此命令,因为它不会影响任何其他图层。

考虑哪些命令需要以什么顺序运行 - 也许你可以通过重新排序语句来改进它。

答案 1 :(得分:1)

是的,如果您标记了docker image myimage,只需使用

启动其他Dockerfile

FROM myimage

并在此之后添加其他更改

答案 2 :(得分:0)

您无法使用更改重建它,您需要在卷上存储持久数据。

但是,要保存更改,您可以使用commit

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

  

根据容器的更改创建新图片

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

  

提交容器的文件更改或设置会很有用   新图像。这允许您通过运行调试容器   交互式shell,或将工作数据集导出到另一台服务器。   通常,最好使用Dockerfiles来管理图像   记录和维护的方式。 Read more about valid image names and tags.

     

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

     

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