我如何使用 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 指出了这一点。
我正在尝试 运行 使用 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
之前将图像从用户传输到 rootpodman 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 指出了这一点。