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

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

主机 –

woot4moo:X:504:504:woot4moo:/首页/ woot4moo:/斌/庆典

我想在Docker容器中这个相同的行为。 这就是说,这是甚至正确的方式来做这种事情? 我的信念是我可以简单地运行:

useradd -u 504 -g 504 woot4moo 

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

您不希望将其作为映像构build过程的一部分(在Dockerfile中)运行,因为某个人运行容器的主机通常不是您构build映像的主机。

解决这个问题的一个方法是通过环境variables传递UID / GID信息:

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

然后在运行CMD之前有一个ENTRYPOINT脚本,其中包含以下内容:

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