如果我正在处理具有多个层的图像,是否可以回滚到上一层或重置到图像堆栈中的另一层?
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
显然,您不需要为图像指定新名称,您可以使用相同的名称。但要小心,当您执行此操作时,您可能无法访问已删除的上层。