2017-03-13 7 views
2

ボリュームを共有してアクセス許可を共有する「クリーン」なソリューションを探しています。可能であれば、同じユーザーをコンテナに入れて、それを起動したローカルユーザーと同じユーザーにしたいと考えています。Dockerのアクセス許可は、コンテナ内のユーザーボリュームをホストします。

現在、私が使用しています:

docker run --rm -v ~/Projects/:/projects/ mycontainer 

それは動作しますが、私のコンテナは、このボリュームで一部のコンテンツを書き込むときに問題が、あり、それは独自のではなく、私のローカルユーザーであるルートです。

この問題を解決する最善の方法は何ですか?可能であれば、私はこのコンテナを同僚と共有したいので、Dockerfileにユーザ情報を作成したくないので、ローカルユーザとコンテナユーザの間のパーミッションの問題を避けたいと思います。

おかげ

答えて

1

あなたはdocker runコマンドでユーザーを指定することができます

--user, -u  Username or UID (format: <name|uid>[:<group|gid>]) 

あなたがホストユーザーの数値のUIDとGIDを使用する場合、作成されたファイルがそれに属します。

+0

あなたの答えはありがとうが、このソリューションでは、私は以前に同じuuidでユーザーを作成する必要がありますか?現在のところ私のコンテナはrootアカウントで動作しているので、--userパラメータを追加しても動作しません。 rootユーザーにSSHキーを追加し、userパラメーターを使用して別のユーザーを使用しているため、キーが見つからないためだと思います。 – Matt

1

ヘンリーにお礼をお寄せいただきありがとうございます。

私の完全なソリューションでした:

docker run --rm -e USER_ID=$(echo "$UID") -v ~/Projects/:/projects/ mycontainer 

そして私は、エントリポイント値としてこのスクリプトをしました:これで

#!/bin/bash 
adduser -D -u $USER_ID alpine &>/dev/null 
cd /projects/ 
su alpine -c 'mycommand ...." 

私のコンテナがでプロジェクトフォルダの内容を変更/アクセスして追加することができます私のローカルユーザーと同じアクセス許可。

関連する問題