80

我正在通过Dockerfile使用一些 nodejs 指令创建一个来玩 docker。现在,每次我对 dockerfile 进行更改时,我都会通过sudo docker build -t nodejstest .在我的项目文件夹中运行来重新创建图像,然而,这每次都会创建一个新图像并很快吞下我的 ssd。

有没有一种方法可以在更改 dockerfile 时更新现有图像,或者每次更改文件时都必须创建一个新图像?

对不起,如果这是一个愚蠢的问题

4

3 回答 3

60

只要没有ADD指令,Docker 构建就支持缓存。如果您正在积极开发和更改文件,则只会ADD重建之后的文件。

从 0.6.2(计划今天)开始,您可以这样做docker build --rm .,它将删除临时容器。它会保留图像。

为了删除孤立图像,您可以使用 签出它们,然后对其中一个docker images执行 a 。docker rmi <id>截至目前,有一个自动修剪,所有未标记的图像(孤儿,以前的版本)都将被删除。

于 2013-09-17T21:19:07.490 回答
19

根据此最佳实践指南,如果您保持 dockerfile 的第一行相同,它还将缓存它们并为将来的构建重用相同的图像

于 2014-01-23T07:36:01.710 回答
1

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

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

看我对这个问题的回答:

Docker Rails 应用程序和 git

于 2013-09-15T19:08:12.060 回答