镜像可以回滚吗?

镜像可以回滚吗?

如果我正在处理具有多个层的图像,是否可以回滚到上一层或重置到图像堆栈中的另一层?

podman 相当于git reset --hard HEAD^图像上的什么?

答案1

如果我明白你在问什么......你正在使用 podman 并且你有一个具有多个层的图像......你想有效地回滚到较早的层。

与 git 很像,podman 图像名称只是对图像 id 的引用,每个图像层都应该有自己的 id。

您可以使用命令查看图像图层podman history,然后使用 向您选择的图层添加标签podman tag


例如,如果您从 Containerfile 开始:

FROM ubuntu:latest
RUN echo hello
RUN echo goodbye
RUN echo something else

然后使用以下命令构建它:

podman build . -t foo

然后您可以查看历史记录:

podman history foo
ID            CREATED             CREATED BY                                     SIZE     COMMENT
4eb0380df1fc  6 seconds ago       /bin/sh -c echo something else                 1.02 kB  FROM localhost/foo:latest
aedc2b11640a  About a minute ago  /bin/sh -c echo goodbye                        1.02 kB  FROM localhost/foo:latest
6782b9a36ab3  4 minutes ago       /bin/sh -c echo hello                          2.05 kB  FROM docker.io/library/ubuntu:latest
825d55fb6340  2 days ago          /bin/sh -c #(nop)  CMD ["bash"]                0 B      
<missing>     2 days ago          /bin/sh -c #(nop) ADD file:b83df51ab7caf8a...  75.1 MB  

然后您可以标记较低层

podman tag 6782b9a36ab3 bar

这允许您使用bar实际上是图像的较低(较早)层的图像foo

podman run -it --rm bar

显然,您不需要为图像指定新名称,您可以使用相同的名称。但要小心,当您执行此操作时,您可能无法访问已删除的上层。

相关内容