在OS X上没有/var/run/docker.sock
我正在尝试使用REST调用来访问Docker信息。 我试过这个例子,我扯下了一个网站:
echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
我没有错,但没有发生任何事。 我有我的系统上的docker图像(我可以做“docker图像”,并看到一个列表)。 我没有运行命令行泊坞窗工具的问题。
查看文件系统,我的系统上没有/var/run/docker.sock。
我在OS X上使用开箱即用的boot2docker安装。Docker信息输出在这里:
bash-3.2$ docker info Containers: 6 Images: 174 Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs Dirs: 186 Execution Driver: native-0.2 Kernel Version: 3.16.7-tinycore64 Operating System: Boot2Docker 1.3.2 (TCL 5.4); master : 495c19a - Mon Nov 24 20:40:58 UTC 2014 Debug mode (server): true Debug mode (client): false Fds: 11 Goroutines: 13 EventsListeners: 0 Init Path: /usr/local/bin/docker
我错过了什么?
Docker只在64位的Linux内核上运行。 如果您使用的是boot2docker,那么您实际上是在与virtualbox虚拟机中的Docker安装进行交谈。 Docker客户端(在Mac上)实际上是通过TLS将REST调用到虚拟机内的Docker守护进程。
由于您的Docker守护进程已经设置为执行TLS,您不需要使用nc
技巧来与套接字交谈,我们可以直接使用curl。 不幸的是,安装在Mac上的curl版本不支持boot2docker中使用的证书types,所以我们必须先创build一个新的证书:
$ cd ~/.boot2docker/certs/boot2docker-vm/ $ openssl pkcs12 -export -inkey key.pem \ -in cert.pem -name b2d-client-side \ -out b2d-client-side.p12 \ -password pass:tcuser
这应该创build文件b2d-client-side.p12
。 (我从https://github.com/boot2docker/boot2docker/issues/573获取这些说明)。 现在我们可以使用curl:
$ curl \ --cacert ~/.boot2docker/certs/boot2docker-vm/ca.pem \ --cert ~/.boot2docker/certs/boot2docker-vm/b2d-client-side.p12:tcuser \ https://$(boot2docker ip):2376/images/json [{"Created":1432076009,"Id":"b96d1548a24e2a089512da28da79ce70825f6d7f"....