【发布时间】:2021-01-26 12:29:15
【问题描述】:
我的情况与here 回答的问题类似。
在答案中,建议在docker镜像中使用fixuid以便(我引用)
我们已经为这个问题创建了一个解决方法,它改变了一个 Docker 在构建时设置的容器的用户/组和文件权限 容器在运行时启动的 UID/GID 的时间。
项目和安装说明位于: https://github.com/boxboat/fixuid
例子:
- Docker 容器是使用用户/组 dockeruser:dockergroup 作为 UID/GID 1000:1000 构建的。
- 主机以 UID/GID 1001:1002 运行。
- 使用 docker run -u 1001:1002 运行映像。 fixuid 将:
- 将 dockeruser UID 更改为 1001
- 将 dockergroup GID 更改为 1002
- 将旧 dockeruser:dockergroup 的所有文件权限更改为 1001:1002
- 将容器内的 $HOME 更新为 dockeruser $HOME
- 现在容器和主机 UID/GID 匹配,并且在主机装载的容器中创建的文件将匹配。
它可以作为 ENTRYPOINT 或作为启动脚本的一部分运行。它是 作为 root 拥有的二进制文件安装在容器中,带有 setuid 位,并提升权限以进行适当的更改。它 只能在开发容器中使用。
但是当我尝试这样做时,我得到了
fixuid: already ran on this system; will not attempt to change UID/GID
因此UID没有改变,这会导致很多问题
【问题讨论】: