Docker 在 dockerfile 更改时更新映像

我正在通过创建一个带有一些 nodejs 指令的 Dockerfile来使用 docker。现在,每次更改 dockerfile 时,我都会在项目文件夹中运行 sudo docker build -t nodejstest .来重新创建映像,但是每次都会创建一个新映像,很快就会吞噬掉我的 ssd。

有没有一种方法,我可以更新一个现有的图像时,我更改的 dockerfile 或我被迫创建一个新的每次我更改的文件?

如果这是个愚蠢的问题,我很抱歉

97138 次浏览

在开发过程中,为每次提交重新构建一个完整的容器是没有意义的。稍后,您可以使用最新的代码自动构建 Docker 容器,作为 QA/部署过程的一部分。

基本上,您可以选择创建一个最小的容器,用于拉入代码(在启动容器时使用 git,或者使用带 ENTRYPOINT 的 -v /home/myuser/mynode:/home/myuser/mynode来运行节点)。

看看我对这个问题的回答:

Docker Rails 应用和 Git

只要没有 ADD指令,Docker 构建支持缓存。如果您正在积极地开发和更改文件,那么将只重新构建 ADD之后的内容。

从0.6.2(今天安排)开始,您可以执行 docker build --rm .,它将删除临时容器。不过它会保留图像。

为了删除孤立图像,您可以使用 docker images检出它们,并对其中一个执行 docker rmi <id>。到目前为止,有一个自动修剪和所有未标记的图像(孤立,以前的构建)将被删除。

根据这个 最佳做法指引,如果你保持你的 dockerfile 的第一行不变,它也会缓存它们,并为将来的构建重用相同的映像