我正在通过Dockerfile
使用一些 nodejs 指令创建一个来玩 docker。现在,每次我对 dockerfile 进行更改时,我都会通过sudo docker build -t nodejstest .
在我的项目文件夹中运行来重新创建图像,然而,这每次都会创建一个新图像并很快吞下我的 ssd。
有没有一种方法可以在更改 dockerfile 时更新现有图像,或者每次更改文件时都必须创建一个新图像?
对不起,如果这是一个愚蠢的问题
我正在通过Dockerfile
使用一些 nodejs 指令创建一个来玩 docker。现在,每次我对 dockerfile 进行更改时,我都会通过sudo docker build -t nodejstest .
在我的项目文件夹中运行来重新创建图像,然而,这每次都会创建一个新图像并很快吞下我的 ssd。
有没有一种方法可以在更改 dockerfile 时更新现有图像,或者每次更改文件时都必须创建一个新图像?
对不起,如果这是一个愚蠢的问题
只要没有ADD
指令,Docker 构建就支持缓存。如果您正在积极开发和更改文件,则只会ADD
重建之后的文件。
从 0.6.2(计划今天)开始,您可以这样做docker build --rm .
,它将删除临时容器。它会保留图像。
为了删除孤立图像,您可以使用 签出它们,然后对其中一个docker images
执行 a 。docker rmi <id>
截至目前,有一个自动修剪,所有未标记的图像(孤儿,以前的版本)都将被删除。
根据此最佳实践指南,如果您保持 dockerfile 的第一行相同,它还将缓存它们并为将来的构建重用相同的图像
在开发过程中,为每次提交重新构建整个容器的意义不大。稍后,您可以使用最新代码自动构建 Docker 容器,作为 QA/部署过程的一部分。
基本上,您可以选择创建一个最小的容器来拉入代码(在启动容器时使用 git,或者使用-v /home/myuser/mynode:/home/myuser/mynode
ENTRYPOINT 来运行节点)。
看我对这个问题的回答: