有没有办法为docker run -group-add指定组的组名和ID?

时间:2017-09-13 18:36:25

标签: docker

目前我在脚本中有以下内容:

DOCKER_GROUP_ID=$(cut -d: -f3 < <(getent group docker))
...
docker run --group-add ${DOCKER_GROUP_ID} ...

问题是,当我运行此脚本时,我始终在结果容器中收到如下消息:

groups: cannot find name for group ID 999

解决方案

根据@TarunLalwani的回答,我的脚本中有以下内容:

DOCKER_GROUP_ID=$(cut -d: -f3 < <(getent group docker))
CMD="docker run -d \                                                                                                                                                                                                                                                                                                                                                         
                --group-add ${DOCKER_GROUP_ID} \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                ${IDEA_IMAGE}"

echo $CMD
CONTAINER=$($CMD)

# Post-configuration                                                                                                                                                                                                                                                                                                                                                         
docker exec --user=root -it $CONTAINER groupadd -g $DOCKER_GROUP_ID docker                                                                                                                                                                                                                                                                                                   

docker attach $CONTAINER

2 个答案:

答案 0 :(得分:1)

这是预期的,用户和组存储在文件系统下的某些文件中。对于用户/etc/passwd,对于组/etc/group

如果你进入容器,你就不会在/ etc / group中找到一个id为999的组的条目,因此id命令也找不到名字。

但请注意,这不应该导致问题,因为名称主要用于显示目的。容器用户已经属于ID为999的组,因此它具有此类组具有的权限,无论该组是否具有显示名称。

答案 1 :(得分:1)

这是预期的行为,因为组ID仅插入容器内而不是其名称。因此,您可以运行id命令,看到组名称不仅仅传递了组ID

唯一的办法就是运行命令groupadd -g 999 docker。这也将它添加到组文件中。但是你必须执行它并且docker不会为你做这件事