追記 2021-02-04
自分のidを指定したいときは
docker run --rm -u `id -u`:`id -g` \
-v $PWD:/work ubuntu:latest touch /work/uid1000gid1000.txt
docker run するときに UID, GIDを指定する
マルチユーザーを想定して、コンテナを動かすときにユーザーのIDを指定したうえで、コンテナ内のコマンドが実行できるのか、手元の環境 docker 1.6.0 で確認してみた。
オフィシャルのドキュメントによると
Dockerfileの中に記述するのであれば、USERを使うことで任意のUIDでコンテナを実行できることが書いてあり、さらにコマンドラインからでも -u="" の形で指定することでこのオプションを上書きすることができる。
ただ、GIDも指定できるようにはみえなかった。
コマンドラインのヘルプで確認する
以下のコマンドで確認してみた
docker run --help
出力から抜粋
-u, --user= Username or UID (format: <name|uid>[:<group|gid>])
ということで、gidも指定できそうであった。
UID 1000, GID 1000 でコンテナを動かしたい
docker 1.6.0 では
docker run --rm -u=1000:1000 -v $PWD:/work ubuntu:latest touch /work/uid1000gid1000.txt
確認する。
$ ls -ln uid1000gid1000.txt
-rw-r--r--. 1 1000 1000 0 Jul 28 15:29 uid1000gid1000.txt
追記(2016-08-02)
複数のgidを指定したいときは、--group-addを使えば良い
(このオプションがいつからつかえるようになっているかはわからないが、1.11.2 ではつかえるようだ)
--group-add=2000
今後
- ほかのバージョンでどうなるのか試してみたい。
- デーモンもうまく動かせるケースもあるのかを確認してみたい。