码头工人是否会检查-f' {{。Parent}}'获取基本图像ID的安全方法?

时间:2017-08-22 15:13:20

标签: docker

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

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

docker inspect

FROM有一个名为" Parent"的条目这似乎包含$ docker inspect -f '{{.Parent}}' dockertest-1 sha256:a20fd0d59cf13f82535ccdda818d70b97ab043856e37a17029e32fc2252b8c56 指令中使用的图像的ID:

<div class="col-md-10">
        <label class="radio-inline">
            @Html.RadioButtonFor(m => m.rad1, "" ,htmlAttributes: new { 
data_bind = "checked: ischecked", id = "rad1" }) Radio 1
        </label>
        <label class="radio-inline">
            @Html.RadioButtonFor(m => m.rad2, "" ,htmlAttributes: new { data_bind = "checked: ischecked", id = "rad2" }) Radio 2
        </label>
    </div>

    <div class="col-md-10">
        <label class="radio-inline">
            @Html.RadioButtonFor(m => m.rad3, "", htmlAttributes: new { data_bind = "checked: ischecked", id = "rad3" }) Radio 3
        </label>
        <label class="radio-inline">
            @Html.RadioButtonFor(m => m.rad4, "", htmlAttributes: new { data_bind = "checked: ischecked", id = "rad4" }) Radio 4
        </label>
    </div>

由于我无法找到任何关于此的文档,我想知道是否应该依赖这些数据来构建我的构建管道。

1 个答案:

答案 0 :(得分:5)

父引用不指向Dockerfile的FROM行中的基本图像,它指向图像中最后一层的倒数第二层。如果您的构建只包含单个图层,那么这可以是FROM行,但是在Dockerfile中添加第二行会破坏您的脚本。

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

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