とある事情からDockerデーモン内で発生したイベントをストリームで取得したいと思ったら、remote APIとかいう便利なものがあったので触ってみた。
ホストはOSXでboot2docker
を使っている。
いつからか分からないが、最新版のboot2docker
だとゲストマシンで起動するdockerデーモンがremote API
を受け付けるオプション付きで動いている模様。
1055 root /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/var/lib/boot2docker/tls/ca.pem --tlscert=/var/lib/boot2docker/tls/server.pem --tlskey=/var/lib/boot2docker/tls/serverkey.pem
curl
を使ってアクセスできるようなので、ホストマシン側からテストがてらGET images/json
を叩いてみる。
yukaarybox:~ yukaary$ curl --insecure --cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem https://192.168.59.103:2376/images/json
curl: (35) Unknown SSL protocol error in connection to 192.168.59.103:-9825
なんと…。繋がらないので色々調べてたらOSX版curl
のバグじゃない?って話題が上がっている。Certificate Authentication Fails、
ちなみにboot2docker ssh
して同じ意味のコマンドを打つと、結果が返ってくる。
docker@boot2docker:~$ curl --insecure --cert ~/.docker/cert.pem --key ~/.docker/
key.pem https://boot2docker:2376/images/json
[{"Created":1414247260,"Id":"806930947ad909768835b8311a061e630ee95e7cb0d3420ec2c815abd21182f1","ParentId":"4271258c1b3fc4f96e8d7ddbf2893ff7f9dfbfcf5d97b5dcae25685930c8645a","RepoTags":["dockerfile/redis:latest"],"Size":0,"VirtualSize":434170370}
解決方法が泣けるけど、セキュリティリスクを承知でTLSオプション無しでdockerd
起動すればいいじゃない!というもの。ゲストマシンにTLSオプションを無効にする設定を書く。
docker@boot2docker:~$ cat /var/lib/boot2docker/profile
DOCKER_TLS=no
docker@boot2docker:~$ sudo /etc/init.d/docker restart
ホストマシンからremote APIを叩いてみる。
yukaarybox:boot2docker-vm yukaary$ curl http://192.168.59.103:2375/images/json
[{"Created":1414247260,"Id":"806930947ad909768835b8311a061e630ee95e7cb0d3420ec2c815abd21182f1","ParentId":"4271258c1b3fc4f96e8d7ddbf2893ff7f9dfbfcf5d97b5dcae25685930c8645a","RepoTags":["dockerfile/redis:latest"],"Size":0,"VirtualSize":434170370}
イメージの一覧は取れた。が、ストリーム関係はだめぽ…。OSXのcurl
が駄目なんじゃないかって気がしてきた。
yukaary$ curl -N http://192.168.59.103:2375/events?since1415972290
シーン...
ゲストマシンからだとストリームAPIも正常に動作する。
docker@boot2docker:~$ curl http://boot2docker:2375/events?since=1415972290
{"status":"die","id":"688f24305b55bb8587635e5392e664e1ec50591c5d13be66e5040a6d6a36d2de","from":"dockerfile/redis:latest","time":1415972323}{"status":"stop","id":"688f24305b55bb8587635e5392e664e1ec50591c5d13be66e5040a6d6a36d2de","from":"dockerfile/redis:latest","time":1415972323}{"status":"die","id":"1811fbe97840253a797c0fac6a33d84bf74eeac084793c3d68f157a36e892199","from":"dockerfile/redis:latest","time":1415972339}{"status":"stop","id":"1811fbe97840253a797c0fac6a33d84bf74eeac084793c3d68f157a36e892199","from":"dockerfile/redis:latest","time":1415972339}{"status":"destroy","id":"688f24305b55bb8587635e5392e
...
追記
mac側に入れていたファイアウォールソフトが全力で邪魔していたっぽい。
yukaarybox:CoreServices yukaary$ curl -N http://192.168.59.103:2375/images/json
[{"Created":1414247260,"Id":"806930947ad909768835b8311a061e630ee95e7cb0d3420ec2c815abd21182f1","ParentId":"4271258c1b3fc4f96e8d7ddbf2893ff7f9dfbfcf5d97b5dcae25685930c8645a","RepoTags":["dockerfile/redis:latest"],"Size":0,"VirtualSize":434170370}
yukaarybox:CoreServices yukaary$ curl -N http://192.168.59.103:2375/events?since=1415972290
{"status":"create","id":"d0d362d2d7b9a1fb61aec059007b7aa902148cb67796ffb01e98840cdf7ba7f5","from":"dockerfile/redis:latest","time":1415975558}{"status":"start","id":"d0d362d2d7b9a1fb61aec059007b7aa902148cb67796ffb01e98840cdf7ba7f5","from":"dockerfile/redis:latest","time":1415975558}
繋がったからよしとしよう…。
No comments:
Post a Comment