在远程服务器上启动Docker容器时,用户/组权限会发生更改



我正在尝试使用远程服务器在Docker上运行实验。问题是,我有一些脚本可以主动修改Docker容器中的配置文件来运行实验,只有当拥有这些文件的用户/组这样做时(我在远程服务器上没有root访问权限(,我才能这样做。

在我的本地系统上,当在不启动docker容器的情况下访问时,用户/组权限是我的个人用户。一旦docker容器启动,用户/组就会根据Dockerfile中的配置更改为alice/alice。但在远程服务器上,即使在docker容器中启动后,它也显示为root/root。有什么建议吗?

在我为Docker构建/运行的shell脚本中,我有以下几行:

.
.
.
CURR_UID=$(id -u)
CURR_GID=$(id -g)
RUN_OPT="-u $CURR_UID:$CURR_GID --net=host --env DISPLAY=$DISPLAY 
--volume $XAUTHORITY:/home/alice/.Xauthority 
--volume /tmp/.X11-unix:/tmp/.X11-unix 
--privileged $MOUNT_DEVEL $MOUNT_LEARN 
--shm-size $SHM_SIZE $GPU_OPT $CONT_NAME 
-it $DETACH --rm $IMAGE_NAME:latest"
docker run $RUN_OPT
.
.
.

运行选项-u$CURR_UID:$CURR_GID应该将用户/组权限设置为当前正在运行它的任何用户/组。在我的Dockerfile中:

.
.
.
# Working user
RUN groupadd --gid ${GROUP_ID} alice && 
useradd -m -s /bin/bash -u ${USER_ID} -g ${GROUP_ID} alice && 
echo "alice:alice" | chpasswd && adduser alice sudo
.
.
.

如果需要的话,我可以提供更多的信息,我真的只需要任何帮助。已经干了好几天了。请告知。非常感谢。

在docker容器中,您可以使用以下指令设置有效用户:

USER alice

记录如下:https://docs.docker.com/engine/reference/builder/#user

相关内容

  • 没有找到相关文章