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 ソケットドメインプログラミングをしてみたいと思います.