有没有办法标记泊坞窗图像中的上一层或还原提交?

时间:2016-07-06 22:09:27

标签: docker docker-registry

假设有一个泊坞窗图片,有人对其进行更改,然后将其推送到docker存储库。然后我拉下图像。有没有办法然后采取该图像并从前一层运行容器?在进行更改之前运行版本。

如果我运行泊坞历史,它将看起来像这样:

docker history imagename:tag
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
3e23a5875458        8 days ago          /bin/sh -c #(nop) ENV LC_ALL=C.UTF-8            0 B
<missing>           8 days ago          /bin/sh -c dpkg-reconfigure locales &&    loc   1.245 MB
<missing>           8 days ago          /bin/sh -c apt-get update && apt-get install    338.3 MB
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD jessie.tar.xz in /        121 MB
<missing>           6 weeks ago         /bin/sh -c #(nop) MAINTAINER ssss <ad   0 B
<missing>           9 months ago                                                        0 B   

如果我想办法以某种方式标记或识别图像的前一层,似乎我可以运行早期版本。

1 个答案:

答案 0 :(得分:4)

您可以通过标记图像的构建图层(如果您有权访问它们)。如上所述here

在你的情况下,可能发生的事情是,从版本v1.10.0开始,他们改变了docker engine handles content addressability的方式。正在对此进行深入讨论here

这意味着您将无法访问构建层,除非您在当前计算机中构建此图像或通过组合导出和加载:

docker save imagename build-layer1 build-layer2 build-layer3 > image-caching.tar
docker load -i image-caching.tar

用户在我之前提到的讨论中发布了一种方便的方法来保存缓存:

docker save imagename $(sudo docker history -q imagename | tail -n +2 | grep -v \<missing\> | tr '\n' ' ') > image-caching.tar

这应该收集给定图像的所有构建层并将它们保存到缓存tar文件中。