![](/img/trans.png)
[英]Docker error dial unix /var/run/docker.sock: no such file or directory
[英]No /var/run/docker.sock on OS X
我正在嘗試使用REST調用來訪問Docker信息。 我嘗試了這個例子,我推出了一個網站:
echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
我沒有錯,但什么也沒發生。 我的系統上有docker圖像(我可以做'docker images'並查看列表)。 運行命令行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,那么您實際上是在虛擬機VM中安裝Docker。 Docker客戶端(在Mac上)實際上通過TLS對VM內的Docker守護進程進行REST調用。
由於您的Docker守護程序已經設置為執行TLS,您不需要使用nc
技巧與套接字通信,我們可以直接使用curl。 不幸的是,Mac上安裝的curl版本不支持boot2docker中使用的證書類型,因此我們必須首先創建一個新證書:
$ 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
這應該創建文件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"....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.