2017-06-15 4 views
0

ドッキングコンテナ内に複雑なアプリケーションの依存関係を入れようとしていますが、最後に矛盾するUIDを持たずに自分のファイルで動作させようとしています。私はDockerfileでこれを入れてしまった自分の特権を持つドッカーコンテナを実行しています

getpwuid(): uid not found: 1000 

:アプリケーションが提供UIDをユーザ名に対応することを期待するので、これは失敗した、しかし

docker run \ 
    --rm \ 
    --volume $HOME/playbook:/playbook --workdir /playbook \ 
    --user $(id --user) \ 
    container_image 

:本質的には、私のような何かを実行したいです:

RUN \ 
    for uid in seq 1000 1010; do \ 
     adduser --home /tmp/user_$uid --uid $uid user_$uid; \ 
    done 

もっと良い解決策はありますか?ポータブルもう少し何かのために

+0

もう1つの解決策は、ディレクトリサーバーを設定することです。非常に特殊な要件がない限り、LDAPはおそらく最も賢明な選択肢です。 –

+0

ユーザーネームスペースはオプションにすることができます。現在のユーザー名スペースはデーモンレベルで利用できます。コンテナレベルで追加する計画があると思います。 – Sreeni

答えて

1

、あなたは読み取り専用ファイルとして容器の中に/ etc/passwdと/ etc/groupファイルをマウントすることができは:コンテナは、それは自分だ期待していた場合

docker run \ 
    --rm \ 
    --volume $HOME/playbook:/playbook --workdir /playbook \ 
    --user $(id --user) \ 
    --volume /etc/passwd:/etc/passwd:ro \ 
    --volume /etc/group:/etc/group:ro \ 
    container_image 

二つの欠点があります定義されるユーザー名、およびイメージからのファイルのアクセス許可に、間違ったまたは不足しているユーザー/グループ定義がある可能性があります。

関連する問題