0

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

4

3 回答 3

5

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

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

考虑 Dockerfile

FROM something
RUN  cmd1
RUN  cmd2
RUN  cmd3
RUN  cmd4

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

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

于 2016-07-27T12:50:51.460 回答
1

是的,如果您标记您的 docker 镜像 myimage,只需启动您的其他 Dockerfile

FROM myimage

并在此之后放置您的其他更改

于 2016-07-27T12:49:18.517 回答
0

您无法通过更改重建它,您需要为此将持久数据存储在卷上。

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

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

从容器的更改创建新图像

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

将容器的文件更改或设置提交到新映像中会很有用。这允许您通过运行交互式 shell 来调试容器,或者将工作数据集导出到另一台服务器。 通常,最好使用 Dockerfiles 以文档化和可维护的方式管理您的图像。 阅读有关有效图像名称和标签的更多信息。

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

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

于 2016-07-27T12:48:09.340 回答