Docker远程API是从Docker后台程序获取数据的接口。
这里是Docker文档的官方网站,https://docs.docker.com/reference/api/docker_remote_api/。
你可以知道Docker远程API的所有细节。但怎样使用它呢?实际上有两种方法,使用Unix套接字或者HTTP端口。
Docker默认会监听unix:///var/run/docker.sock这个Unix套接字。
我对Unix套接字也不太熟悉,它有点像一个通信的管道。你可以从这个文件中获得Docker的数据。
但我们需要写程序来访问它。幸运的是,我们找到了curl-unix-socket这个项目,地址是https://github.com/Soulou/curl-unix-socket。你可以通过go get github.com/Soulou/curl-unix-socket
安装它,然后运行curl-unix-socket unix:///var/run/docker.sock:/images/json
来测试。
这是很有用的,你可以获得所有Docker信息来监控你的Docker后台进程。但这是个命令行工具而且它只能像Docker客户端那样工作。
因此海鸥复用了它的代码,从Docker后台进程中获得数据。这是最便利的方法,无需额外的操作。
你�也可以使用HTTP远程API。但你必须手动暴露这个端口。
首先你需要通过service docker stop
停止Docker后台进程。然后加上参数重启它,就像这样docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243 &
。现在你可以在浏览器测试它,或者直接运行curl -X GET http://127.0.0.1:4243
。
HTTP远程API是很有用的,但它要求用户重启Docker后台进程。
如果你不是要开发一个海鸥这样的工具,我觉得Docker客户端已经够用了。你可以用Docker客户端做任何操作,而且它是官方支持的。