我目前正在试验Docker,特别是在给定容器内的用户影响Docker主机本身的方面。最终,我希望用户能够从其容器内部在其自己的主机上运行容器。这听起来有点荒谬,但我希望它有效。
目前,我正在寻找让该用户成为Docker主机docker
组的一部分的方法。有没有办法做到这一点?
答案 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!