一尘不染

docker inspect -f'{{.Parent}}'是获取基本映像ID的安全方法吗?

docker

我想在其基础映像更改时自动重建Docker容器。这样做的目的是将当前标记容器的基本映像ID与Docker
Hub中的基本映像ID进行比较,如果不同,则运行新的构建。

获取最新的基本映像ID似乎很简单:

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

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

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

由于我真的找不到关于此的任何文档,所以我想知道是否应该依靠此数据来构建构建管道。


阅读 428

收藏
2020-06-17

共1个答案

一尘不染

父代引用未指向FROMDockerfile行中的基本映像,而是指向映像中的最后一层。如果您的构建仅包含一个图层,则可能是这一FROM行,但是在Dockerfile中添加第二行会破坏您的脚本。

如果您知道基本图片的标签(此类元信息未存储在图片中,那么您需要在外部进行跟踪,也许在图片中添加标签),然后可以搜索docker history当前图片的基本图像当前sha256的图像。我将使用以下参数来生成ID列表:

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