/var/run/docker.socketのパーミッション

CentOS7において表題の件について少々ハマったのでメモ。

■ 環境

  • CentOS 7.0
  • Docker 1.7.1
  • Vagrant 1.7.4

■ CentOS 7

DockerがサポートしているCentOSのversionが以前は6.6でもkernelのversionさえ合えば良かったと記憶しているのだが、現在はCentOS-7.Xでなければダメと記載されている。kernelのversionも上がっている気がする。

http://docs.docker.com/installation/centos/

よって、CentOS 7の環境を準備することにした。

■ Vagrant

検証環境はVagrantで準備する。Boxは”chef/centos-7.0“を使用する。

$ vagrant box add chef/centos-7.0
$ vagrant init chef/centos-7.0
$ vagrant up

■ Docker

CentOS 7系では、デフォルトのレポジトリに”docker“が存在するようであるので、これをインストールする。

$ sudo yum install docker

またサービスとしても起動。

$ sudo systemctl start docker.service

一般ユーザからも`sudo`を使用せずに`docker`コマンドを利用したいので、いつものように”dockerroot“グループに”vagrant“ユーザを追加する。

$ sudo usermod -G dockerroot vagrant

これで”vagrant“ユーザも`docker`コマンドを利用できるようになるはず…と思ったのだが下記のエラーで使用できず。

$ docker version
Get http:///var/run/docker.sock/v1.19/containers/json?all=1: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
$

`/var/run/docker.sock`を確認してみると、下記のようになっている。

$ ls -l /var/run/docker.sock
srw-rw----. 1 root root 0  8月 19 19:09 /var/run/docker.sock
$

今までの環境においては、`root:root`ではなく、`root:dockerroot`であったと記憶している。よって変更してしまう。

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

これで再度`docker`コマンドで確認したところ、問題なく結果が得られた。

$ docker version
Client version: 1.7.1
Client API version: 1.19
Package Version (client): docker-1.7.1-108.el7.centos.x86_64
Go version (client): go1.4.2
Git commit (client): 3043001/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Package Version (server): docker-1.7.1-108.el7.centos.x86_64
Go version (server): go1.4.2
Git commit (server): 3043001/1.7.1
OS/Arch (server): linux/amd64
$

permissionを変更してしまって良いのか…とも思ったが、”docker-engine“や他の環境においては`root:dockerroot`であるから、問題はないだろう。あくまで自己責任である。

以上。

■ 関連