有没有一种方法来标记泊坞窗图像中的前一层或恢复提交?

假设有一个docker镜像,有人对其进行了修改,然后将其推送到docker仓库。 然后我拉下图像。 有没有办法,然后采取这个形象,并从前一层运行一个容器? 在更改之前运行版本。

如果我运行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 

看起来好像我可以运行一个较早的版本,如果我找出一种方式来标记或识别图像的以前的图层。

您可以通过标记图像的构build图层,如果您有权访问它们。 如此处所述。

在你的情况下,从版本v1.10.0开始,他们改变了docker 引擎处理内容寻址的方式 。 这里正在深入讨论这个问题 。

这意味着你将无法访问构build层,除非你在当前机器上构build了这个镜像,或者通过结合导出和加载:

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

用户已经发布了一个方便的方式来保存我之前提到的讨论caching:

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

这应该收集给定图像的所有构build层,并将其保存到cachingtar文件。