docker检查-f“{{.Parent}}”一个安全的方式来获得基础的图像ID?

我想在基础镜像更改时自动重buildDocker容器。 这个想法是比较当前标记的容器的基本图像ID和Docker Hub中的基本图像的ID,如果不同,则运行一个新的版本。

获取最新的基础图像ID似乎非常简单:

$ docker pull debian:latest >/dev/null 2&>1; docker images debian:latest -q sha256:a20fd0d59cf13f82535ccdda818d70b97ab043856e37a17029e32fc2252b8c56 

docker inspect有一个名为“父”,似乎包含在该指令中使用的图像的ID:

 $ docker inspect -f '{{.Parent}}' dockertest-1 sha256:a20fd0d59cf13f82535ccdda818d70b97ab043856e37a17029e32fc2252b8c56 

既然我找不到任何有关这方面的文档,我想知道是否应该依靠这些数据来构build我的构buildpipe道。

父引用不指向Dockerfile的FROM行中的基本映像,它指向图像中的最后一个图层。 如果你的版本只包含一个图层,那么这可以是FROM行,但是添加第二行到你的Dockerfile将会破坏你的脚本。

如果你知道你的基本图像的标签(这种元信息不存储在图像中,所以你需要在外部跟踪它,也许在图像上添加一个标签),那么你可以searchdocker history当前图像为您的基本图像的当前sha256。 我会使用下面的参数来生成一个ID列表:

 $ docker history --format '{{ .ID }}' --no-trunc $image_id