我正在使用如下命令行构建 Docker 镜像:
docker build -t myimage .
一旦此命令成功,则重新运行它是无操作的,因为
Dockerfile
指定的图像没有改变。有没有办法检测 Dockerfile
(或构建上下文文件之一)随后更改而无需重新运行此命令?
最佳答案
看着 docker inspect $image_name
从一个构建到另一个构建,如果 docker 镜像没有改变,一些信息不会改变。其中之一是 docker Id
.所以,我使用了 Id
检查 docker 是否已更改的信息如下:
首先,可以得到图像Id
如下:
docker inspect --format {{.Id}} $docker_image_name
然后,要检查构建后是否有更改,您可以按照以下步骤操作:
代码:这是一个实现上述想法的工作 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
关于docker - 检测 Docker 镜像是否会在运行构建时发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316996/