【问题标题】:Access docker remote API from container从容器访问 docker 远程 API
【发布时间】:2017-04-21 05:35:03
【问题描述】:

我正在尝试从容器内访问 Docker 远程 API,因为我需要启动其他容器。

主机地址是172.19.0.1,所以我使用http://172.19.0.1:2375/images/json来获取图片列表(来自主机,http://localhost:2375/images/json按预期工作。

连接被拒绝,我猜是因为 Docker(适用于 Windows)监听 127.0.0.1 而不是 0.0.0.0。

我尝试更改配置(来自 UI 和 daemon.json)添加条目:

"hosts": ["tcp://0.0.0.0:2375"]

但守护程序无法启动。如何访问 api?

【问题讨论】:

  • 您提到您使用的是 Docker for Windows,但没有提及您使用的是哪种容器类型。您使用的是 Windows 容器还是 Linux 容器?

标签: docker docker-api docker-for-windows


【解决方案1】:

您可以如下在windows中设置DOCKER_OPTS并尝试。在 Windows 中,Docker 在虚拟机中运行。因此,您必须通过 ssh 进入 VM 并进行更改。

DOCKER_OPTS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'

检查它是否适合你。

更新:-要通过 ssh 进入虚拟机(假设默认是您使用 Docker 工具箱创建的虚拟机名称),请在 Docker 快速启动终端中输入以下命令,

docker-machine ssh default

您可以找到更多详细信息here。

【讨论】:

  • ssh 的地址是什么(或者我怎样才能找到它)?
  • 此外,我发现了反对暴露套接字的建议:lvh.io/posts/… 这似乎是 DOCKER_OPTS 的行为。解决方案安全吗?
  • 我没有运行任何 docker 机器(docker-machine ls 返回一个空列表),即使我能够使用 docker(我已经安装了最新的 Docker 工具)。我应该创建一个码头机器吗?以及它与我当前使用的“默认/标准”docker 实例有什么关系?
  • 是的,您需要一台 docker 机器。理想情况下,它应该在您安装 Docker for Windows 时安装,但您始终可以单独安装(参考 this)
【解决方案2】:

您可以将主机的 /var/run/docker.sock 链接到您需要的容器中。这样,您就不会通过开放端口公开 Docker Remote API。

请注意,它确实提供了对 docker 的类似 root 的访问权限。

-v /var/run/docker.sock:/var/run/docker.sock

【讨论】:

    【解决方案3】:

    您应该使用“tcp://host.docker.internal:2375”从容器连接到主机。请确保您可以 ping 通“host.docker.internal”地址 https://github.com/docker/for-win/issues/1976

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多