AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1055456
Accepted
dax
dax
Asked: 2021-03-02 00:48:59 +0800 CST2021-03-02 00:48:59 +0800 CST 2021-03-02 00:48:59 +0800 CST

Podman 无根容器:访问外部卷很麻烦

  • 772

我想从无根 podman 容器内访问主机系统上的目录。当使用带有 podman 无根容器的外部卷时,访问外部卷的用户具有调用 podman 的用户的 subuid 和 subgid。哪个用户 id 取决于调用用户和 OCI 容器中的内部用户的子 id 范围。我发现让这个子用户访问外部卷的唯一方法(除了让主机系统上的每个人都可以写该文件夹)是chown直接访问该子用户 ID 的目录。有没有更好的方法来做到这一点,它不涉及我手动检查/etc/subgid以及容器中的用户?

podman
  • 1 1 个回答
  • 576 Views

1 个回答

  • Voted
  1. Best Answer
    Erik Sjölund
    2021-04-07T11:43:03+08:002021-04-07T11:43:03+08:00

    备选方案 1

    Podman 3.1.0(2021 年 3 月发布):U为--volume命令行选项引入了新的后缀。

    从手册页引用:

    :U 后缀告诉 Podman 根据容器内的 UID 和 GID 使用正确的主机 UID 和 GID,以递归方式更改源卷的所有者和组。

    备选方案 2(推荐)

    您可以将容器 UID 映射到当前拥有卷中文件的主机 UID,而不是更改所有权。的命令行选项是--uidmap和--gidmap:

    该--uidmap选项为用户提供了一种将容器 UID 映射到主机 UID 的方法。容器 UID 虽然没有直接映射到主机 UID。相反,映射发生在两个映射步骤中:

    容器 UID -> 中间 UID -> 主机 UID

    第一个映射步骤可以使用--uidmap进行配置。数量指定将被映射的连续 UID 的数量。

    例如,如果数量为 4,则第一个映射步骤如下所示:

    容器 UID 中间UID
    容器_uid 中间件_uid
    容器_uid + 1 中间_uid + 1
    container_uid + 2 中间_uid + 2
    容器_uid + 3 中间_uid + 3

    第二个映射步骤是由 podman 从文件/etc/subuid的内容和启动 podman 的用户的 UID 导出的。

    第二个映射步骤:

    中间UID 主机 UID
    0 用户启动 podman 的 UID
    1 /etc/subuid中的第一个SUBUID
    2 /etc/subuid中的第二个SUBUID
    3 /etc/subuid中的第三个SUBUID
    第n个 /etc/subuid中的第 n 个SUBUID

    (从/etc/subuid中使用的 SUBUID 取自属于启动 podman 的用户的范围)

    2022-02-14 更新

    我在 Podman 文档中写了关于备选方案 2的故障排除提示。

    • 1

相关问题

  • 在 buildah 中运行 mknod 时出错

  • 无法使用 podman 在两个 rootfull 容器之间进行通信

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve