我正在通过创建一个带有一些 nodejs 指令的 Dockerfile来使用 docker。现在,每次更改 dockerfile 时,我都会在项目文件夹中运行 sudo docker build -t nodejstest .来重新创建映像,但是每次都会创建一个新映像,很快就会吞噬掉我的 ssd。
Dockerfile
sudo docker build -t nodejstest .
有没有一种方法,我可以更新一个现有的图像时,我更改的 dockerfile 或我被迫创建一个新的每次我更改的文件?
如果这是个愚蠢的问题,我很抱歉
在开发过程中,为每次提交重新构建一个完整的容器是没有意义的。稍后,您可以使用最新的代码自动构建 Docker 容器,作为 QA/部署过程的一部分。
基本上,您可以选择创建一个最小的容器,用于拉入代码(在启动容器时使用 git,或者使用带 ENTRYPOINT 的 -v /home/myuser/mynode:/home/myuser/mynode来运行节点)。
-v /home/myuser/mynode:/home/myuser/mynode
看看我对这个问题的回答:
Docker Rails 应用和 Git
只要没有 ADD指令,Docker 构建支持缓存。如果您正在积极地开发和更改文件,那么将只重新构建 ADD之后的内容。
ADD
从0.6.2(今天安排)开始,您可以执行 docker build --rm .,它将删除临时容器。不过它会保留图像。
docker build --rm .
为了删除孤立图像,您可以使用 docker images检出它们,并对其中一个执行 docker rmi <id>。到目前为止,有一个自动修剪和所有未标记的图像(孤立,以前的构建)将被删除。
docker images
docker rmi <id>
根据这个 最佳做法指引,如果你保持你的 dockerfile 的第一行不变,它也会缓存它们,并为将来的构建重用相同的映像