我正在使用一些nodejs指令创建Dockerfile
来玩docker。现在,每次我对dockerfile进行更改时,我都会通过在项目文件夹中运行sudo docker build -t nodejstest .
来重新创建图像,但是每次都会创建一个新图像并很快吞下我的ssd。
有没有办法在更改dockerfile时更新现有图像,或者每次更改文件时都被迫创建一个新图像?
对不起,如果这是一个愚蠢的问题
答案 0 :(得分:44)
只要没有ADD
指令,Docker就会构建支持缓存。如果您正在积极开发和更改文件,则只会重建ADD
之后的内容。
从0.6.2(今天安排)开始,您可以执行docker build --rm .
,它将删除临时容器。它会保留图像。
要删除孤立图像,您可以使用docker images
检查它们,并对其中一个执行docker rmi <id>
。截至目前,有一个自动修剪和所有未标记的图像(孤儿,以前的版本)将被删除。
答案 1 :(得分:15)
根据这个best practices guide,如果你保持dockerfile的第一行相同,它也会缓存它们并为将来的构建重用相同的图像
答案 2 :(得分:1)
在开发期间,为每次提交重新构建整个容器没有多大意义。稍后,您可以使用最新代码自动构建Docker容器,作为QA /部署过程的一部分。
基本上,您可以选择创建一个引入代码的最小容器(在启动容器时使用git,或者使用带有ENTRYPOINT的-v /home/myuser/mynode:/home/myuser/mynode
运行节点)。
请参阅我对这个问题的回答: