自分用メモ

プログラミングとかのメモを書きたいです

SakuraVPSのCentOS7でDockerのインストール

とりあえず、dockerの依存性を見てみる。

$ yum deplist docker
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: mirror.dmmlabs.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
パッケージ    : docker.x86_64 2:1.13.1-53.git774336d.el7.centos
  依存性      : /bin/sh
   provider: bash.x86_64 4.2.46-29.el7_4
  依存性      : docker-client = 2:1.13.1-53.git774336d.el7.centos
   provider: docker-client.x86_64 2:1.13.1-53.git774336d.el7.centos
  依存性      : docker-common = 2:1.13.1-53.git774336d.el7.centos
   provider: docker-common.x86_64 2:1.13.1-53.git774336d.el7.centos
  依存性      : libassuan.so.0()(64bit)
   provider: libassuan.x86_64 2.1.0-3.el7
  依存性      : libaudit.so.1()(64bit)
   provider: audit-libs.x86_64 2.7.6-3.el7
  依存性      : libc.so.6(GLIBC_2.17)(64bit)
   provider: glibc.x86_64 2.17-196.el7_4.2
  依存性      : libdevmapper.so.1.02()(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.140-8.el7
  依存性      : libdevmapper.so.1.02(Base)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.140-8.el7
  依存性      : libdevmapper.so.1.02(DM_1_02_97)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.140-8.el7
  依存性      : libdl.so.2()(64bit)
   provider: glibc.x86_64 2.17-196.el7_4.2
  依存性      : libgpg-error.so.0()(64bit)
   provider: libgpg-error.x86_64 1.12-3.el7
  依存性      : libgpgme.so.11()(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  依存性      : libgpgme.so.11(GPGME_1.0)(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  依存性      : libgpgme.so.11(GPGME_1.1)(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  依存性      : libpthread.so.0()(64bit)
   provider: glibc.x86_64 2.17-196.el7_4.2
  依存性      : libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-196.el7_4.2
  依存性      : libpthread.so.0(GLIBC_2.3.2)(64bit)
   provider: glibc.x86_64 2.17-196.el7_4.2
  依存性      : libseccomp.so.2()(64bit)
   provider: libseccomp.x86_64 2.3.1-3.el7
  依存性      : libsystemd.so.0()(64bit)
   provider: systemd-libs.x86_64 219-42.el7_4.10
  依存性      : libsystemd.so.0(LIBSYSTEMD_209)(64bit)
   provider: systemd-libs.x86_64 219-42.el7_4.10
  依存性      : rtld(GNU_HASH)
   provider: glibc.x86_64 2.17-196.el7_4.2
   provider: glibc.i686 2.17-196.el7_4.2
  依存性      : systemd
   provider: systemd.x86_64 219-42.el7_4.10

特に気にせずインストール

Dockerの公式サイトに手順が載っているけど、無視してコマンド一発で済ませる。 Get Docker CE for CentOS | Docker Documentation docker-ceとdocker-eeの内容の違いは不明。(コミュニティーエディションとエンタープライズエディションらしい)

sudo yum install docker
docker --version
→ Docker version 1.13.1, build 87f2fab/1.13.1

バージョン1.13は結構古いみたいだけど、気にしないことにする。

起動と自動起動

sudo systemctl start docker
sudo systemctl enable docker
→ Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

Dockerの起動(ただしrootで)

docker run ubuntu:14.04 /bin/echo 'Hello world'
→ /usr/bin/docker-current: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See '/usr/bin/docker-current run --help'.

権限のエラーが出てしまった。とりあえずrootで再実行。

sudo docker run ubuntu:14.04 /bin/echo 'Hello world'
→
Unable to find image 'ubuntu:14.04' locally
Trying to pull repository docker.io/library/ubuntu ... 
14.04: Pulling from docker.io/library/ubuntu
324d088ce065: Pull complete 
2ab951b6c615: Pull complete 
9b01635313e2: Pull complete 
04510b914a6c: Pull complete 
83ab617df7b4: Pull complete 
Digest: sha256:b8855dc848e2622653ab557d1ce2f4c34218a9380cceaa51ced85c5f3c8eb201
Status: Downloaded newer image for docker.io/ubuntu:14.04
Hello world

とりあえず動いた。

ユーザをdockerrootグループに追加

下記の話はあるみたいだが、とりあえずユーザをdockerグループに追加してみる。 qiita.com

ただし、dockerrootグループになっているようだった。

 cat /etc/group
root:x:0:
bin:x:1:
 :
略
 :
dockerroot:x:991:
# グループに追加
sudo gpasswd  -a username dockerroot

# 再実行(結局ダメだった)
docker run ubuntu:14.04 /bin/echo 'Hello world'
→
/usr/bin/docker-current: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See '/usr/bin/docker-current run --help'.

下記の話らしい。 qiita.com

ls -l /var/run/docker.sock
→
srw-rw---- 1 root root 0  5月 15 22:36 /var/run/docker.sock

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

再度、一般ユーザで実行

docker run ubuntu:14.04 /bin/echo 'Hello world'
→
/usr/bin/docker-current: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See '/usr/bin/docker-current run --help'.

同じエラーだった。なぜだろう・・・。 とりあえず、/var/run/docker.sockはdocker再起動後にはroot:rootに戻ってしまうことと、root:dockerrootになっていてもダメみたいだ。

qiita.com こんな記事を見つけたので、試してみたけど、結果は変わらずだった・・・。

sudo groupadd docker
sudo gpasswd -a username docker
sudo systemctl restart docker

できないと思ったけど、記事の末尾に書いてあるとおり、ログインし直したらdockerコマンドが使えるようになった!!

ついでに、docker-composeもインストールした。

sudo yum install docker-compose