docker 引擎调用从其中一个应用程序容器发出时应该是什么样子

How should a docker engine call look like when issued from within one of the app containers

我是 docker 的初学者。我想从我的 docker 容器之一中 运行 docker 引擎 api 调用 - 特别是列出所有图像(images/json 端点)。我正在尝试排除故障 ,并希望通过命令行实时查看问题。

我正在努力弄清楚我应该在容器内的 curl 请求表单中使用什么主机(this post 似乎是相关的,但我尝试了那里建议的所有内容但没有成功)。尝试过容器 ip(取自 ifconfig)、本地主机、docker-compose yml 文件中定义的服务名称。没有任何效果。

This post 似乎指示如何做到这一点。但是这个建议再次对我不起作用:curl --unix-socket /var/run/docker.sock http://images/json。这个returns{"message":"page not found"}

非常感谢任何帮助。

最重要的是了解可以 运行 docker 命令的人拥有类似于主机上的根帐户的权限。话虽这么说,如果你不介意的话,你可以使用“docker-in-docker”模式,开始

docker run --privileged=true  -v /var/run/docker.sock:/var/run/docker.sock ...

当然,您应该在 docker 图像中安装 docker(才能访问命令)

如果只是列出图像(例如:主机上的简单 REST 服务器,只能从 运行ning 容器访问),我建议寻找没有上述内容的其他解决方案

啊...找到答案了 here:

curl --unix-socket /run/docker.sock http://docker/images/json 终于对我有用了。

This post 谈到需要“docker”或从 curl 版本 7.4 开始添加另一个虚拟主机。旧版本不需要它。