小知识:Mac OSX系统 Docker启用Docker远程API功能

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
2
3
4
$ 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: 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格式的证书
?
1
2
3
4
5
6
7
8
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

注意,–cert参数现在指向了生成的p12证书,证书的密码使用–pass参数进行指定。

然后会得到如下结果:

?
1
2
3
[{“Id”:”sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a”,”ParentId”:””,
“RepoTags”:[“arungupta/couchbase:latest”],”RepoDigests”:null,”Created”:1450330075,”Size”:374824677,
“VirtualSize”:374824677,”Labels”:{}}]

现在可以尝试启动CouchBase服务器:

?
1
2
~ > docker run -d -p 8091-8093:8091-8093 -p 11210:11210 arungupta/couchbase
42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e

再调用另一个REST API来查看容器的细节内容:

?
1
2
~ > curl https://192.168.99.100:2376/containers/json –cert $DOCKER_CERT_PATH/cert2.p12 –pass mypass –key $DOCKER_CERT_PATH/key.pem –cacert $DOCKER_CERT_PATH/ca.pem
[{“Id”:”42d1414883affd0fbb272cb1378c2f6b5118acf3ed5cb60cbecdc42f95602e3e”,”Names”:[“/admiring_pike”],”Image”:”arungupta/couchbase”,”ImageID”:”sha256:d38beda529d3274636d6cb1c9000afe4f00fbdcfa544140d6cc0f5d7f5b8434a”,”Command”:”/entrypoint.sh /opt/couchbase/configure-cluster.sh”,”Created”:1454850194,”Ports”:[{“IP”:”0.0.0.0″,”PrivatePort”:8092,”PublicPort”:8092,”Type”:”tcp”},{“PrivatePort”:11207,”Type”:”tcp”},{“IP”:”0.0.0.0″,”PrivatePort”:11210,”PublicPort”:11210,”Type”:”tcp”},{“PrivatePort”:18092,”Type”:”tcp”},{“PrivatePort”:18091,”Type”:”tcp”},{“IP”:”0.0.0.0″,”PrivatePort”:8093,”PublicPort”:8093,”Type”:”tcp”},{“IP”:”0.0.0.0″,”PrivatePort”:8091,”PublicPort”:8091,”Type”:”tcp”},{“PrivatePort”:11211,”Type”:”tcp”}],”Labels”:{},”Status”:”Up 2 seconds”,”HostConfig”:{“NetworkMode”:”default”},”NetworkSettings”:{“Networks”:{“bridge”:{“IPAMConfig”:null,”Links”:null,”Aliases”:null,”NetworkID”:””,”EndpointID”:”6feaf4c1c70feaf0ba240ce55fb58ce83ebb84c8098bef9171998e84f607fa0b”,”Gateway”:”172.17.0.1″,”IPAddress”:”172.17.0.2″,”IPPrefixLen”:16,”IPv6Gateway”:””,”GlobalIPv6Address”:””,”GlobalIPv6PrefixLen”:0,”MacAddress”:”02:42:ac:11:00:02″}}}}]

感谢阅读,希望能帮助到大家,谢谢大家对本站的 支持!

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:轻松搞定VMware虚拟机的数据恢复

2023-4-22 16:39:11

建站知识

小知识:如何在Hyper-V虚拟机上安装WSUS服务器技巧

2023-4-22 16:53:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索