【问题标题】:How can I use sudo podman to run a container from current user image store如何使用 sudo podman 从当前用户图像存储运行容器
【发布时间】:2021-03-22 20:53:47
【问题描述】:

我正在尝试使用 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 的后续调用失败。

我的其他解决方法包括在运行之前将图像从用户传输到 root

podman save <image> | sudo podman load
sudo podman run <image>

【问题讨论】:

  • 如果您想在用户之间共享相同的容器映像存储,只读容器映像存储:additionalimagestores 可能有用(请参阅redhat.com/sysadmin/image-stores-podman)。
  • @ErikSjölund 太棒了,谢谢,似乎有效。

标签: podman


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-09-25
    • 2019-05-29
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2021-04-28
    • 2020-06-15
    • 2019-11-15
    相关资源
    最近更新 更多