Docker Remote API 如何使用?
docker 的 Remote API 定义如下:
这个API看着是http协议的但是我用 curl http://127.0.0.1:4243/containers/json 这个命令却什么也得不到,我从网上另外搜到的命令 echo -e "GET /images/json HTTP/1.0
" | nc -U /var/run/docker.sock 可以得到所有容器的信息,我想知道如果是 http 协议的接口的话为什么用 curl 得不到数据?
![](https://pic2.zhimg.com/fd596e16ebf6d48fa109af688a84db71_b.jpg)
按投票排序 按时间排序
4 个回答
你要把 docker daemon 绑定到该端口上。默认情况下,docker daemon使用unix socket(unix:///var/run/docker.sock) 先停止docker daemon再重新启动:
之后就可以:
service docker stop
docker -d -H unix:///var/run/docker.sock -H 0.0.0.0:4243
curl http://127.0.0.1:4243/containers/json
知乎用户
赞同
赞同
Docker Remote API是一个取代远程命令行界面(rcli)的REST API。本文中,我们将使用命令行工具cURL来处理url相关操作。cURL可以发送请求、获取以及发送数据、检索信息。具体内容你可以看看这篇文章:Docker入门教程(八)Docker Remote API
8997511
赞同
赞同
1 修改配置文件 CentOS: /etc/sysconfig/docker Ubuntu: /etc/init/docker.conf DOCKER_OPTS='-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock'
2. 重启 service restart docker
3. 测试 在本机 curl http://127.0.0.1:2375/info 在其他机器上:curl http://hostanme:2375/info * 此时本地client可以继续通过Unix sock与docker daemon通行 例如:docker info 命令继续有效。
2. 重启 service restart docker
3. 测试 在本机 curl http://127.0.0.1:2375/info 在其他机器上:curl http://hostanme:2375/info * 此时本地client可以继续通过Unix sock与docker daemon通行 例如:docker info 命令继续有效。
默认以文件socket方式启动docker的,改成tcp的就可以了
参考资料:
http://www.zhihu.com/question/24852884
http://blog.csdn.net/zhang__jiayu/article/details/43453369