macでdocker remote apiを有効化する方法について調べた時のメモを残します。
(linuxだと検索すれば結構でてくるんですが、macだと該当の設定ファイル・コマンドがなかったりしてなかなか苦労しました。。)
環境
OS
>> sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G95
Docker
>> docker version ※一部抜粋
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
socatコマンドを使う
docker daemonはデフォルトで
unix:///var/run/docker.sock
でリクエストを待ち受けていますが、
リモートホストからHTTPでAPIを叩く時はTCPのポートで待ち受ける必要があります。
socatコマンドはプロキシのような働きをし、あるポートへのリクエストを指定した宛先にフォワードしてくれます。
以下のコマンドを実行することで、2376ポートへのリクエストを/var/run/docker.sock
へ飛ばしてくれるようになります。
socat TCP-LISTEN:2376,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock
以下コマンドでAPIのレスポンスがjsonで返ってくることが確認できます。
curl http://localhost:2376/containers/json
※あとでもっと情報が整理できたら追記するかも。。