我使用 Dockerfile 构建了一个 docker 映像。构建映像后,我对 Dockerfile 进行了一些基本更改。是否可以仅通过其他更改重建相同的图像。由于创建图像需要很长时间,我不想完全构建它。提前致谢。
3 回答
所有 docker build 都以您描述的方式工作。
唯一需要考虑的是层依赖性。
考虑 Dockerfile
FROM something
RUN cmd1
RUN cmd2
RUN cmd3
RUN cmd4
如果您更改cmd1
,则所有层都将被重建,因为它们可能与“cmd1
如果您更改”不同,cmd4
则只有此命令将被重建,因为它不会影响任何其他层。
想想哪些命令需要以什么顺序运行——也许你可以通过重新排序语句来改进它。
是的,如果您标记您的 docker 镜像 myimage,只需启动您的其他 Dockerfile
FROM myimage
并在此之后放置您的其他更改
您无法通过更改重建它,您需要为此将持久数据存储在卷上。
但是,要保存更改,您可以使用commit
:
https://docs.docker.com/engine/reference/commandline/commit/
从容器的更改创建新图像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
将容器的文件更改或设置提交到新映像中会很有用。这允许您通过运行交互式 shell 来调试容器,或者将工作数据集导出到另一台服务器。 通常,最好使用 Dockerfiles 以文档化和可维护的方式管理您的图像。 阅读有关有效图像名称和标签的更多信息。
提交操作将不包括安装在容器内的卷中包含的任何数据。
默认情况下,正在提交的容器及其进程将在提交映像时暂停。这降低了在创建提交的过程中遇到数据损坏的可能性。