首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >podman:将容器用户映射到主机用户以获得共享卷权限

podman:将容器用户映射到主机用户以获得共享卷权限
EN

Server Fault用户
提问于 2022-11-28 10:13:59
回答 1查看 968关注 0票数 2

我正在尝试使用podman设置gitea。我想要

  • 映射到主机目录的数据卷,因为它允许我轻松地检查和备份数据。
  • 由特定主机用户执行的容器进程。

Podman由根用户执行,主要是因为我在podman generate systemd --new和无根容器中遇到的问题(参见系统User=指令不受支持,为什么?支持系统中的User=以运行无根服务)。

为了实现对根满容器的映射,开始将所有在用容器uid、S和gids映射到主机的gitea user。我最后得到的结果是

代码语言:javascript
运行
复制
podman run --rm \
    --uidmap=0:$(id -u gitea):1 \
    --gidmap=0:$(id -g gitea):1 \
    --uidmap=1000:$(id -u gitea):1 \
    --gidmap=1000:$(id -g gitea):1 \
    --gidmap=42:$(id -g gitea):1 \
    --volume /srv/gitea/data:/var/lib/gitea \
    docker.io/gitea/gitea:1.18.0-rc1-rootless

我得到的输出是

代码语言:javascript
运行
复制
WARN[0000] Path "/etc/SUSEConnect" from "/etc/containers/mounts.conf" doesn't exist, skipping 
WARN[0000] Path "/etc/zypp/credentials.d/SCCcredentials" from "/etc/containers/mounts.conf" doesn't exist, skipping 
Error: OCI runtime error: runc create failed: unable to start container process: can't get final child's PID from pipe: EOF

尽管路径警告,我还是成功地运行了其他的podman容器,所以我认为它们可以被忽略。

我正在运行podman version 3.4.7 on openSUSE Leap 15.3。

如何运行这个容器,同时将所有正在使用的uids和gids映射到特定的主机用户/组?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-11-28 16:58:56

根本原因似乎是试图将多个容器uids (和gids )映射到一个单一的uid/gid到主机。因此,我试图映射(容器到主机):

  • UID 0→gitea
  • GID 0→gitea
  • UID 1000→gitea
  • GID 1000→gitea
  • GID 42→gitea

相反,我知道回到了不同的映射,其中只有实际运行Gitea应用程序的1000UID/GID对被映射到主机用户,而其他人则收到不同的UID范围。

代码语言:javascript
运行
复制
    --uidmap=0:10000:999 \
    --gidmap=0:10000:999 \
    --uidmap=1000:$(id -u gitea):1 \
    --gidmap=1000:$(id -g gitea):1 \

这意味着我们有以下映射

  • UID 0-999→10000-10999
  • GID 0-999→10000-10999
  • UID 1000→gitea
  • GID 1000→gitea

通过此更改,容器成功启动,主机上的权限与预期的相同。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1116778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档