目前了解到非 root 运行容器有几种方案, 有 rootless docker, 将用户加入 docker group. 再往下细分, 目前常见的方案有用 user 参数指定 uid/gid, 还有使用 PUID/PGID 环境变量指定自定义用户.
使用 user 指定用户, 要求宿主机提前创建相同的 uid/gid, 才能被映射到容器内. 而使用 PUID/PGID 则是容器创建时动态创建用户, 容器初始按 root 权限运行, 随后才切换到非 root 用户.
https://docs.linuxserver.io/misc/non-root/#why
现在有这么个需求, 一台 linux 服务器支持 dev container 形式开发环境, 需要让每个用户打开开发容器时在容器内部使用宿主机 uid/gid 的用户, 而不是开发容器默认的 vscode 用户(uid/gid 1000), 有什么比较好的办法?
当前能想到的方法是改造开发容器镜像, 做成类似 linuxserver 那样的镜像, 通过 PUID 和 PGID 传递用户.
注: 需求来源是开发容器不会拥有独立 ip, 又要开放 samba 服务, 准备将各用户的家目录通过宿主机的 samba 统一映射出去, 因此需要容器内使用的用户跟宿主机的用户保持一致, 不然会有权限问题.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.