2017-09-13 7 views
0

現在、私は、スクリプトの中で次のようなものを持っている:docker run --group-addでグループの名前とIDを指定する方法はありますか?

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 
+1

それはグループIDがコンテナの内部にのみ、その名前ではなく挿入されているのでokieです。だから、 'id'コマンドを実行すると、グループ名がグループIDに渡されないことがわかります –

+0

' groupadd -g 999 docker'コマンドを実行する唯一の方法があります。これもグループファイルに追加されます。しかし、あなたはそれを実行しなければならないとドッカーはあなたのためにそれをしません –

+0

@タルンルルワニークール、それは働いた! docker execを使用して実行します。 – bbarker

答えて

1

グループIDはコンテナ内にのみ挿入され、名前は挿入されないため、これは正常な動作です。だからidコマンドを実行すると、グループ名だけがグループidに渡されないことがわかります

唯一の方法は、コマンドgroupadd -g 999 dockerを実行することです。これもグループファイルに追加されます。しかし、あなたはそれを実行しなければならないし、ドッカーはあなたのためにそれをしません

1

これは、ユーザーとグループがファイルシステムの特定のファイルに格納されると予想されます。ユーザーの場合は/etc/passwd、グループの場合は/etc/groupです。

コンテナの中に入ると、/ etc/groupにID 999のグループのエントリが見つからないため、idコマンドでも名前を見つけることができません。

ただし、名前は主に表示目的のため、問題はありません。コンテナユーザーはすでにID 999のグループに属しているため、グループに表示名があるかどうかにかかわらず、そのようなグループが持つアクセス許可があります。

関連する問題