繁体   English   中英

如何将容器用户添加到 Docker 主机中的用户组?

[英]How do I add a container user to a user group in the Docker host?

我目前正在 Docker 上专门针对给定容器内的用户影响 Docker 主机本身的方面进行试验。 最终,我希望用户能够从其容器内部在其自己的主机上运行容器。 这听起来有点荒谬,但我希望它有效。

目前,我正在寻找一种方法让给定用户成为 Docker 主机的docker组的一部分。 有没有办法做到这一点?

从 Docker 主机的角度来看,容器内的任何用户都被视为与容器外具有相同 UID(不是同名!)的用户完全相同,无论该 UID 是否在主机上实际使用。 不幸的是,似乎只有具有用户名的用户才能属于组,因此您不能只将 UID 添加到组中。 相反,您需要将具有相同 UID 的主机用户添加到组中(或者,如果该 UID 不存在,则创建一个具有该 UID 的用户)。

我编写了一个 bash 脚本来动态生成 dockerfiles,并将当前用户添加到容器和 docker 组中。 这是它的肉:

# get the current user's info
user=$USER
uid=`id -u $user`
gid=`id -g $user`

# get gid for group docker
RESULT=$(id -g docker 2>&1)
if [ 1 -ne $? ] ; then
    docker_gid=$RESULT
fi

echo FROM ubuntu:14.04

echo MAINTAINER Nobody "no-reply@nothere.com"

echo USER root
echo "RUN apt-get update && apt-get -y install docker-engine"
echo "RUN /bin/bash -c 'getent passwd ${user} || \
    adduser --system --gid ${gid} ${docker_group} --uid ${uid} --shell /bin/bash ${user} || \
    usermod -l ${user} \$(getent passwd ${uid} | cut -d: -f1)'"

if [ -n "$docker_gid" ] ; then
    echo "RUN /bin/bash -c 'getent group docker && groupmod --gid ${docker_gid} docker \
        || groupadd --gid ${docker_gid} docker'"
    echo "RUN /bin/bash -c 'groups ${user} | grep docker || usermod --groups ${docker_gid} ${user}'"
fi

哼!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM