CentOS7の検証: Dockerを一般ユーザーで管理できるようにする。
※ 2016/08/18追記
0.9.0 (2014-03-10) にて -G
オプションが追加されたので本記事の対応は不要になりました。
docker/CHANGELOG.md at master · docker/docker · GitHub
Add a -G option to specify the group which unix sockets belong to.
追記終わり。
Dockerのsocketファイルは/var/run/docker.sockに配置されている。
[root@c7-client01 system]# ll /var/run/docker.sock srw-rw---- 1 root contentsuser 0 Jan 10 18:06 /var/run/docker.sock
このsocketのOwner, Permissionを変更することで、
一般ユーザーでDockerを管理できるようにしたいと思ったのが今回の話。
環境は以下の通り。
CentOS Linux release 7.0.1406 (Core) docker-1.2.0-1.8.el7.centos.x86_64 systemd-208-11.el7_0.5.x86_64
/lib/systemd/system/docker.socket
を見ると
SocketUser=root SocketGroup=docker
という記述がありここを編集すればsocketファイルのOwnerを変更できそうである。
実際に編集してDockerを再起動してみたが、socketファイルのOwnerは変更されない。
調べてみるとそれらしき情報を見つけた。
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752555
# These are only available in systemd 214+ #SocketUser=root #SocketGroup=docker
ということらしい。
上の情報の通り、
ExecStartPost=/bin/chown root:<another group> /var/run/docker.sock
の記述を/lib/systemd/system/docker.service
に追加してみたがうまくいかない。
docker.socketでsocketが作られた後、
docker.serviceの
ExecStart=/usr/bin/docker -d $OPTIONS $DOCKER_STORAGE_OPTIONS
でdockerが起動するときにデフォルトの設定に上書きされてしまうようである。
最終的に
/lib/systemd/system/docker.service
にExecStartPost=/bin/chown~
の記述を追記することで回避。