CentOS7でsudoなしでdockerを利用するちょっとした工夫
概要
トゥ~ン…(プロフェッショナル風)
家のサーバをCentOS6.8からCentOS7にした。
Dockerを入れた。
Rootでは使えた。
CentOS6.8でやったように一般ユーザで使えるように設定した。
一般ユーザでは使えなかった。詰まった。
あと一歩だけ前に進もう…(プロフェッショナル)
そこで、sudoなしで使うためのCentOS7特有の設定について記したい。
同じ点
dockerインストールと起動
CentOS6系ではレポジトリの追加が必要でしたが、CentOS7では標準で対応しています。
$ sudo yum install docker
もともと7系で標準搭載する機能としてfedoraとかで開発が進んでたものなのでね。(たしか)
$ sudo systemctl start docker.service
dockerサービスを起動させます。ここまではCentOS6.8でも同様でした。
異なる点
その1 dockerのグループが違う
dockerはLinuxのコンテナ技術を使った仮想化の仕組みですので、
考え方はインスタンス(仮想サーバ)というよりも1プロセスとして考える方が自然です。
そのためか、dockerは基本rootでしか動きません。というよりdockerサービスが使用する
ファイルは権限はrootのものがほとんどですので当たり前といえば当たり前なのですが。
ですが、DockerではDocker所属グループにユーザをぶち込むことで
rootでないユーザでもsudoなしで利用できるようになります。
CentOS6系ではDocker(docker-io)の所属グループは「docker」でしたが、
CentOS7ではDockerの所属グループは「Dockerroot」になっております。
groupファイルを確認するとdockerユーザになっております。
<中略>
pulse-access:x:992:
pulse:x:171:
gdm:x:42:
sssd:x:991:
gnome-initial-setup:x:990:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
tcpdump:x:72:
slocate:x:21:
vboxusers:x:989:
clamupdate:x:988:
apache:x:48:
tomcat:x:91:
mysql:x:27:
radiusd:x:95:
dockerroot:x:987:jenkins,tubone
hadoop:x:1001:
input:x:986:
systemd-bus-proxy:x:985:
systemd-network:x:984:
geoclue:x:983:
setroubleshoot:x:982:
そのためCentOS6系の手順である、一般ユーザをdockerグループにぶち込む設定はこうなります。
$ sudo gpasswd -a USER dockerroot
その2 Dockerが使用するsockファイルをきちんとする
上記の手順で普通なら完了するのだが、私の環境ではどうにもうまくいかない。
なぜなんだ… ということで、sock ファイル を確認してみると
srw-rw---- 1 root root 0 8月 27 19:06 /var/run/docker.sock
と、所属グループがrootですね… たまげたなぁ。
所属グループをdockerrootに直してあげます。
$ sudo chown root:dockerroot /var/run/docker.sock
確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
エラーが表示されず一般ユーザで動かせたよ。
やったぜ。