docker remote api を有効にするときにちょっとハマったこと

Docker のインストールを久しぶりに行ったのですが
Versionが上がって、少し手順が変わったのでご紹介。
また、ハマってしまったことについてもメモします。

Docker をインストールするときは公式の手順に沿って
普通にインストールを行います。
https://docs.docker.com/engine/installation/

手順がしっかりドキュメントに書いてあるので ここまでで迷う点はなかったです。
環境情報はこんな感じ。

~$ uname -a
Linux ip-10-50-0-211 4.8.0-28-generic #30~16.04.1-Ubuntu SMP Mon Nov 21 12:03:16 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

~$ docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 22:01:48 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 22:01:48 2016
 OS/Arch:      linux/amd64

さて、RemoteAPIを有効にしていきます。
今までは設定ファイルを /etc/systemd/docker.service.d/docker.conf に作っていましたが
どうも読み込まれない模様・・・

systemctl で一体どの設定ファイルが使われているのか調べてみると
以下のような行がみつかります。

Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)

~$ systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-12-06 03:30:26 UTC; 1h 14min ago
     Docs: https://docs.docker.com
 Main PID: 15924 (dockerd)
    Tasks: 99
   Memory: 44.5M
      CPU: 7.712s
   CGroup: /system.slice/docker.service
           ├─15924 /usr/bin/dockerd -H fd:// 
           ├─15938 docker-containerd -l unix:///var/run/docker/libcon

        

ふむふむ
こいつをきちんと書き換えてあげればいいようです。

/lib/systemd/system/docker.service

#ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

ここで RemoteAPI 設定を tcp://localhost:2375 としてしまうと
ローカルからしかつなげることができなくなってしまうので注意です。

ここまでできたら以下のコマンドをぶっ叩いてもらうと
RemoteAPI が有効になります

systemctl daemon-reload
systemctl restart docker.service


テストしてみます。

~$ curl -vvv http://172.17.0.1:2375/version
*   Trying 172.17.0.1...
* Connected to 172.17.0.1 (172.17.0.1) port 2375 (#0)
> GET /version HTTP/1.1
> Host: 172.17.0.1:2375
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: application/json
< Server: Docker/1.12.3 (linux)
< Date: Tue, 06 Dec 2016 04:52:55 GMT
< Content-Length: 198
< 
{"Version":"1.12.3","ApiVersion":"1.24","GitCommit":"6b644ec","GoVersion":"go1.6.3","Os":"linux","Arch":"amd64","KernelVersion":"4.8.0-28-generic","BuildTime":"2016-10-26T22:01:48.986273588+00:00"}
* Connection #0 to host 172.17.0.1 left intact

OK!