有没有办法标记 docker 图像中的前一层或还原提交?
Is there a way to tag a previous layer in a docker image or revert a commit?
假设有一个 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
如果我想出一种方法来标记或识别图像的前几层,我似乎可以 运行 一个早期版本。
您可以通过标记图像的构建层(如果您有权访问它们)。如所述 here.
在您的情况下,可能发生的情况是从 v1.10.0 版本开始,他们改变了 docker engine handles content addressability. This is being heavily discussed 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 文件中。
假设有一个 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
如果我想出一种方法来标记或识别图像的前几层,我似乎可以 运行 一个早期版本。
您可以通过标记图像的构建层(如果您有权访问它们)。如所述 here.
在您的情况下,可能发生的情况是从 v1.10.0 版本开始,他们改变了 docker engine handles content addressability. This is being heavily discussed 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 文件中。