我目前正在試驗Docker,特別是在給定容器內的用戶影響Docker主機本身的方面。最終,我希望用戶能夠在其容器內的自己的主機上運行容器。這聽起來有點荒謬,但我希望它有效。如何將容器用戶添加到Docker主機中的用戶組?
目前,我正在尋找一種方法讓給定的用戶成爲Docker主機的docker
組的一部分。有沒有辦法做到這一點?
我目前正在試驗Docker,特別是在給定容器內的用戶影響Docker主機本身的方面。最終,我希望用戶能夠在其容器內的自己的主機上運行容器。這聽起來有點荒謬,但我希望它有效。如何將容器用戶添加到Docker主機中的用戶組?
目前,我正在尋找一種方法讓給定的用戶成爲Docker主機的docker
組的一部分。有沒有辦法做到這一點?
從Docker主機的角度來看,容器內部的任何用戶都被視爲與具有相同UID(不是同一名稱!)的容器外的用戶完全相同,無論UID是否實際上正在使用主人。不幸的是,似乎只有擁有用戶名的用戶可以屬於組,因此您不能只將UID添加到組中。相反,您需要將具有相同UID的主機用戶添加到組中(或者如果不存在,則使用該UID創建用戶)。
我寫了一個bash腳本,用於在容器和docker組上添加當前用戶,隨時生成dockerfiles。這裏是它的肉:
# 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 "[email protected]"
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!
那麼是否可以更改容器內用戶的UID,以便我可以將其映射到Docker主機上的用戶? –
根據你的設置,你可以用'--user'選項設置UID到'docker run' - 或者你的容器不是那麼簡單? – jwodder
我認爲我使用的基本映像以某種方式從根目錄切換到另一個非root用戶。 '--user'如何影響它? –