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すればうまくいくようになりました。
参考文献