LoginSignup
19
18

More than 5 years have passed since last update.

Dockerのバージョン1.10で正式に導入されたUser Namespacesを試してみる

Last updated at Posted at 2016-03-22

Docker 1.10のUser Namespacesを試してみたので、手順を書いておこうと思います。

この機能を有効にすると、共有マシンでも安心して一般ユーザーにDockerを使ってもらうことができるようです。

設定

Step 0. (手近にDocker 1.10以降のマシンがある方はこのステップをスキップしてください。)僕はboot2dockerでMac OS X上のVirtualBoxでテストしているので、まずはテスト用のDocker Machineを作って、そのマシンにログインします。(例:test1):

docker-machine create --driver virtualbox test1
docker-machine ssh test1

Step 1. dockremapというユーザーを作ります(*パスワードは任意)。

sudo adduser dockremap

Step 2. subuidとsubgidを準備します。

sudo sh -c 'echo dockremap:500000:65536 > /etc/subuid'
sudo sh -c 'echo dockremap:500000:65536 > /etc/subgid'

Step 3. /etc/init.d/dockerを開いて/usr/local/bin/docker daemonの隣に--userns-remap=defaultを付け足します。下記のような感じになります。

sudo vi /etc/init.d/docker
 :
 :
/usr/local/bin/docker daemon --userns-remap=default -D -g "$DOCKER_DIR" -H unix:// $DOCKER_HOST $EXTRA_ARGS >> "$DOCKER_LOGFILE" 2>&1 &
 :
 :

Step 4. Dockerをリスタートします。

sudo /etc/init.d/docker restart

設定がうまく行っていれば、ホスト上の/etcをコンテナにマウントしてもオーナーがnobody nogroupになっていてファイルを編集・削除することができません。

下記の参考例では、ホストの/etcをコンテナの/root/etcにマウントして試してみます。

参考例

Step 1. コンテナを作ります。

docker run --rm -v /etc:/root/etc -it ubuntu

Step 2. /root/etcのオーナーがnobody nogroupになっていることを確認します。

root@d5802c5e670a:/# ls -la /root/etc
total 180
drwxr-xr-x 11 nobody nogroup  1100 Mar 21 23:31 .
drwx------  3 root   root     4096 Mar 21 23:50 ..
lrwxrwxrwx  1 nobody nogroup    19 Mar 21 23:07 acpi -> /usr/local/etc/acpi
-rw-r--r--  1 nobody nogroup    48 Mar 10 22:09 boot2docker
drwxr-xr-x  2 nobody nogroup    60 Mar 21 23:07 default
 :
 :

Step 3. 試しにtestというファイルを作ってみます(が作れません)。

root@d5802c5e670a:/# touch /root/etc/test
touch: cannot touch '/root/etc/test': Permission denied

Step 4. 試しにhostnameというファイルを削除してみます(が削除できません)。

root@d5802c5e670a:/# rm /root/etc/hostname
rm: cannot remove '/root/etc/hostname': Permission denied

こんな感じです。この機能のマイナスな点は、つまりVolumeが使えなくなるという意味でもあります。一長一短ではありますが、セキュリティの向上という点では飛躍的な進歩ですね。

参考になったリンク

19
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18