在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端口,命令如下:
此命令存在一定的问题。主要有:
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: Cant 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格式的证书现在可以调用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
注意,–cert参数现在指向了生成的p12证书,证书的密码使用–pass参数进行指定。
然后会得到如下结果:
现在可以尝试启动CouchBase服务器:
再调用另一个REST API来查看容器的细节内容:
感谢阅读,希望能帮助到大家,谢谢大家对本站的 支持!