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

时间:2016-02-26 19:04:16

标签: linux docker

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我编写了一个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

HTH!