我如何使用 sudo podman 来 运行 来自当前用户图像存储的容器

How can I use sudo podman to run a container from current user image store

我正在尝试 运行 使用 podman 作为 root 本地构建的容器。请注意,这纯粹是针对开发环境,我知道 运行 将容器作为 root 是不好的。

sudo podman run -it <image>

然而,由于图像存在于 ~/.local 下,当前用户 podman 无法找到它。

所以我尝试将 podman 指向用户容器存储区域

sudo podman run -it <image> --root /home/<username>/.local/share/containers/storage

这失败了

Error: error creating libpod runtime: database libpod temporary files directory (tmpdir) "/run/user/1000/libpod/tmp" does not match our libpod temporary files directory (tmpdir) "/var/run/libpod": database configuration mismatch

所以我又试了一次,

sudo podman run -it <image> \
   --root /home/<username>/.local/share/containers/storage \
   --tmpdir /run/user/1000/libpod/tmp \
   --runroot /run/user/1000

这确实有效,但会导致留下只有 root 可以访问的文件。这意味着对非 sudo podman 的后续调用失败。

我的其他解决方法包括在 运行ning

之前将图像从用户传输到 root
podman save <image> | sudo podman load
sudo podman run <image>

root 用户使用配置 /etc/containers/storage.conf,这可以修改为包括非 root 用户图像存储。参见 https://www.redhat.com/sysadmin/image-stores-podman

additionalimagestores = [
"/home/<username>/.local/share/containers/storage"
]

感谢 @ErikSjölund 指出了这一点。