在Mac OSX系統的Docker機上啟用Docker遠程API功能
Docker守護進程提供了一套遠程REST API,具體可以參考文檔:
https://docs.docker.com/engine/reference/api/docker_remote_api/
這套API是提供給客戶端與Docker引擎通信時使用,這套API也可以由其他工具調用,比如curl或Chrome瀏覽器的Postman REST客戶端工具。
如果是在Mac OSX Mavericks系統上使用Docker機創建Docker守護進程,那么要啟用Docker遠程API功能需要一定的技巧。下面一一道來。
可以使用curl工具連接到安全的Docker端口,命令如下:
$ curl https://$HOST:2376/images/json --cert ~/.docker/cert.pem --key ~/.docker/key.pem --cacert ~/.docker/ca.pem
此命令存在一定的問題。主要有:
1)命令可能不工作,因為每一個Docker機的證書存儲在.docker/machine/machines/目錄。
2)即使命令根據路徑做了修改,比如:curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.pem --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem
執行命令仍然會得到錯誤信息:
curl: (58) SSL: Can't load the certificate "/Users/arungupta/.docker/machine/machines/couchbase/cert.pem" and its private key: OSStatus -25299
解決方法是需要更新curl工具。總的來說,最新版的curl工具使用了Apple的安全傳輸層API(Secure Transport API),取代了原先的OpenSSL API。這意味著證書必須是p12格式。
下面可以這樣修復命令:
1)進入Docker機存放證書的目錄,比如.docker/machine/machines/couchbase目錄
2)生成*.p12格式的證書openssl pkcs12 -export -inkey key.pem -in cert.pem -CAfile ca.pem -chain -name client-side -out cert.p12 -password pass:mypass
現在可以調用REST API了:
curl https://192.168.99.100:2376/images/json --cert $DOCKER_CERT_PATH/cert.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem
注意, 主站蜘蛛池模板: 司法| 托克托县| 资溪县| 五峰| 赤峰市| 万盛区| 鄯善县| 孙吴县| 江山市| 阳谷县| 炎陵县| 乐陵市| 苗栗县| 浦县| 吴桥县| 英德市| 浑源县| 栾川县| 长寿区| 浦江县| 大连市| 大同市| 富民县| 石首市| 上饶县| 当雄县| 江阴市| 探索| 饶河县| 浪卡子县| 锦州市| 长丰县| 巴青县| 宜州市| 云阳县| 错那县| 乐至县| 灵山县| 浙江省| 弋阳县| 筠连县|