一尘不染

Docker从主机复制容器中的UID / GID

docker

在创建Docker容器时,我一直遇到UID /
GID没有反映在容器中的问题(我意识到这是设计使然)。我正在寻找一种保持主机权限合理和/或从Docker容器中的主机用户/组帐户复制UID /
GID的方法。例如:

主持人-

woot4moo:x:504:504:woot4moo:/ home / woot4moo:/ bin / bash

我希望Docker容器中也有这种行为。话虽这么说,这甚至是做这种事情的正确方法吗?我的信念是我可以简单地跑步:

useradd -u 504 -g 504 woot4moo

作为我的Dockerfile的一部分,但是我不确定这是否有效。


阅读 234

收藏
2020-06-17

共1个答案

一尘不染

您不希望在镜像构建过程中(在Dockerfile中)运行该镜像,因为有人在其上运行容器的主机通常 不是 您在其上构建镜像的主机。

解决此问题的一种方法是通过环境变量传递UID / GID信息:

docker run -e APP_UID=100 -e APP_GID=100 ...

然后ENTRYPOINT在运行之前,编写一个包含以下内容的脚本CMD

useradd -c 'container user' -u $APP_UID -g $APP_GID appuser
chown -R $APP_UID:$APP_GID /app/data
2020-06-17