DockerホストマシンにHTTPでリクエスト飛ばして色々としたかったのですが、デフォルトだとUnix domain socketしか有効になっていないっぽい。
どうすればいいんかと調べたら、systemdの起動スクリプトにオプションを追加すればいいっぽい。
参考文献を参考に、/lib/systemd/system/docker.service
に以下のような変更をしました。
:(略)
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
### ここの行を
ExecStart=/usr/bin/dockerd
### こうじゃ
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
:(略)
で、systemctl daemon-reload
→ systemctl restart docker.service
で再起動。
確認するには curl localhost:2375/version
を叩けばいいです。
こんな風に結果が返ってきます。
そこで「できた〜」となって実際に使おうとしたのですが、ホストマシンでdockerコマンドを使うとこんな感じに。
[vagrant@localhost ~]$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
で、色々調べると、dockerコマンドはデフォルトではunix domain socketを使って通信をするっぽく、起動時の-H
オプションを与えたらsocketファイルがなくなるっぽい。*1
なので、こんな感じで起動スクリプトを修正。
:(略)
### ここの行を
ExecStart=/usr/bin/dockerd
### こうじゃ
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
:(略)
で同じようにdaemon-reloadしてrestart dockerすればうまくいくようになりました。
参考文献
d.hatena.ne.jp