检测Docker镜像是否会在运行构build中更改
我正在使用如下命令行构build一个Docker镜像:
docker build -t myimage .
一旦这个命令成功,然后重新运行它是一个无操作,由Dockerfile
指定的图像没有改变。 有没有办法检测Dockerfile
(或其中一个构build上下文文件)是否随后更改,而无需重新运行此命令?
如果这是你正在寻找的,没有一个dry-run
选项。 您可以使用不同的标签,以避免影响现有的图像,并寻找---> Using cache
在输出中---> Using cache
(然后删除标签,如果你不想要的话)。
查看docker inspect image_name
从一个构build到另一个,如果docker图像没有改变,几个信息不会改变。 其中之一是dockerId
。 所以,我使用Id
信息来检查docker是否被改变如下。 首先,可以得到如下的图像Id
:
docker inspect --format {{.Id}} docker_image_name
要validation构build之后是否有更改,可以执行以下步骤:
- 在构build之前获取图像ID
- build立形象
- 在构build之后获取图像ID
- 比较这两个ID,如果他们匹配没有变化,如果他们没有太多,就有一个变化。
具体来说,这里是一个工作bash的例子
docker inspect --format {{.Id}} docker_image_name > deploy/last_image_build_id.log # I get the docker last image id from a file last_docker_id=$(cat deploy/last_image_build_id.log) docker build -t docker_image_name . docker_id_after_build=$(docker inspect --format {{.Id}} docker_image_name if [ "$docker_id_after_build" != "$last_docker_id" ]; then echo "image changed" else echo "image didn't change" fi