当前位置: 首页 > 面试题库 >

是否可以在Docker映像中标记上一层或还原提交?

季城
2023-03-14
问题内容

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

如果我运行docker history,它将看起来像这样:

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

如果我想出一种方法来标记或标识图像的先前层,则好像可以运行早期版本。


问题答案:

如果可以访问图像,可以通过标记图像的构建层来对其进行标记。如上所述这里。

在您的情况下,可能会发生的事情是,从v1.10.0版本开始,它们已经改变了Docker
引擎处理内容可寻址性的方式。这在这里被大量讨论。

这意味着,除非您在当前计算机上构建了该映像,或者通过组合进行导出和加载,否则您将无权访问构建层:

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 中标记第二个映像时,第一个映像会丢失其标记: 那么,图像是否要一对多标记,即一个图像可以在存储库中具有多个标记,但一个标记不能应用于同一存储库中的 2 个或多个图像?

  • 我的AWS ECR中有一个Docker映像,我想将其转换为AWS AMI,以便在环境中创建实例。 尝试在Docker容器上使用AMI的原因 我必须在m4中的Docker容器中运行计算密集型ML任务。xlarge在一些文本文件上的实例。然而,使用Docker时,实例的CPU利用率达到了100%,脚本也在提前终止。 但是,它在Docker外部的同一实例中运行良好。 因此,我想从Docker转移到AMI

  • 我在服务器中执行docker()清洁命令: 令我惊讶的是,这个命令删除了停止的容器。这就是问题所在,有些容器因为某种原因停止了,但我仍然想在未来使用它。现在它被删除了,有没有可能恢复错误删除的停止的容器?

  • 我知道我可以使用这个命令$docker images-tree查看docker图像的层,但是我如何在不拉动docker Hub的情况下查看docker图像?这是为了在下载图像之前知道图像上的内容。 E、 对于Tomcat回购,https://registry.hub.docker.com/_/tomcat/,网页似乎没有显示图像上的内容。我必须查看Github上的Dockerfile才能找到答案。

  • 问题内容: 每次部署之前,我都有一个要用以下命令更新的映像。 此命令将覆盖先前的图像。我如何备份此映像(或在不提交到网络存储库的情况下,在本地将其更改为其他标签?如果有任何问题,我可以还原备份。 问题答案: 如何备份这张图片 只需使用docker save 命令。 您稍后将可以使用docker load 命令将其还原。 还是将其更改为本地的其他标签,而无需提交网络存储库? 使用docker tag

  • 问题内容: 我在Docker网站上找到了这些信息 可以运行,启动,停止,移动和删除Docker容器。 据我所知,可以移动Docker映像,而不能移动Docker容器。但是上面的信息清楚地位于标题“ Docker容器”的下方。 因此,我想知道是否可以移动容器(如果不能移动,那么“ Docker容器可以移动”是什么意思)。 谢谢! 问题答案: 您可以使用 参见 https://docs.docker.