在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"....