簡體   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