ようへいの日々精進XP

よかろうもん

Docker Remote API に UNIX ドメインソケット経由でアクセスする

tl;dr

ニッチかもしれないけど, ECS の Docker 用ストレージ容量監視を Docker Remote API を介して行えないか, そして, できれば UNIX ドメインソケット経由で API にアクセス出来ないかを調査しました. 今回は curl を使って UNIX ドメインソケットにアクセスします.

色々

試した環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.4
BuildVersion:   18E226

$ docker -v
Docker version 18.09.2, build 6247962

$ curl -V
curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy

docker version

curl -s --unix-socket /var/run/docker.sock http:/v1.20/version

以下, 実行結果です.

$ curl -s --unix-socket /var/run/docker.sock http:/v1.20/version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"18.09.2","Details":{"ApiVersion":"1.39","Arch":"amd64","BuildTime":"2019-02-10T04:13:06.000000000+00:00","Experimental":"false","GitCommit":"6247962","GoVersion":"go1.10.6","KernelVersion":"4.9.125-linuxkit","MinAPIVersion":"1.12","Os":"linux"}}],"Version":"18.09.2","ApiVersion":"1.39","MinAPIVersion":"1.12","GitCommit":"6247962","GoVersion":"go1.10.6","Os":"linux","Arch":"amd64","KernelVersion":"4.9.125-linuxkit","BuildTime":"2019-02-10T04:13:06.000000000+00:00"}

docker info

curl -s --unix-socket /var/run/docker.sock http:/v1.20/info

結果はながーくなるので割愛します. すいません. docker info を実行して取得出来る情報が取得可能でした.

docker ps -a

curl -s --unix-socket /var/run/docker.sock 'http:/v1.24/containers/json?all=1'

結果はながーくなるので割愛します. docker ps -a と同等の情報を取得出来ます.

docker images

curl -s --unix-socket /var/run/docker.sock 'http:/v1.24/images/json?all=0'

結果はながーくなるので割愛.

結果

UNIX ドメインソケット経由でいい感じでストレージサイズは取得出来ることがわかった. 頑張って UNIX ソケットドメインプログラミングをしてみたいと思います.