我想在其基础映像更改时自动重建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
FROM
$ docker inspect -f '{{.Parent}}' dockertest-1 sha256:a20fd0d59cf13f82535ccdda818d70b97ab043856e37a17029e32fc2252b8c56
由于我真的找不到关于此的任何文档,所以我想知道是否应该依靠此数据来构建构建管道。
父代引用未指向FROMDockerfile行中的基本映像,而是指向映像中的最后一层。如果您的构建仅包含一个图层,则可能是这一FROM行,但是在Dockerfile中添加第二行会破坏您的脚本。
如果您知道基本图片的标签(此类元信息未存储在图片中,那么您需要在外部进行跟踪,也许在图片中添加标签),然后可以搜索docker history当前图片的基本图像当前sha256的图像。我将使用以下参数来生成ID列表:
docker history
$ docker history --format '{{ .ID }}' --no-trunc $image_id