CentOS7でsudoなしでdockerを利用するちょっとした工夫

  • 8
    いいね
  • 0
    コメント

CentOS7でsudoなしでdockerを利用するちょっとした工夫

概要

トゥ~ン…(プロフェッショナル風)
家のサーバをCentOS6.8からCentOS7にした。
Dockerを入れた。
Rootでは使えた。
CentOS6.8でやったように一般ユーザで使えるように設定した。
一般ユーザでは使えなかった。詰まった。

あと一歩だけ前に進もう…(プロフェッショナル)

そこで、sudoなしで使うためのCentOS7特有の設定について記したい。

同じ点

dockerインストールと起動

CentOS6系ではレポジトリの追加が必要でしたが、CentOS7では標準で対応しています。

yum
$ sudo yum install docker

もともと7系で標準搭載する機能としてfedoraとかで開発が進んでたものなのでね。(たしか)

systemd
$ 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ユーザになっております。

/etc/group
<中略>
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グループにぶち込む設定はこうなります。

gpasswd
$ sudo gpasswd -a USER dockerroot

その2 Dockerが使用するsockファイルをきちんとする

上記の手順で普通なら完了するのだが、私の環境ではどうにもうまくいかない。
なぜなんだ… ということで、sock ファイル を確認してみると

/var/run/docker.sock
srw-rw---- 1 root root 0  8月 27 19:06 /var/run/docker.sock

と、所属グループがrootですね… たまげたなぁ。

所属グループをdockerrootに直してあげます。

chown
$ sudo chown root:dockerroot /var/run/docker.sock

確認

確認
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

エラーが表示されず一般ユーザで動かせたよ。
やったぜ。