【问题标题】:Connect to Linux Containers via IP as with Windows Containers与 Windows 容器一样,通过 IP 连接到 Linux 容器
【发布时间】:2017-08-07 12:30:08
【问题描述】:

当我在开发框中启动 Windows 容器时,我会获得一个 IP 地址(通过 docker inspect),该地址可用于从主机或 compose 内的容器(docker compose)连接到容器。

不幸的是,对于 Linux(常规)容器,我无法获得相同的结果。当我对 Linux 图像使用类似的撰写文件时,我通过环回地址连接到它们(从主机),这不是我想要的。我是否可以在不自己明确设置 IP 地址的情况下获得与 Windows 容器相同的行为,究竟如何使用 Windows 容器?

【问题讨论】:

  • “相似撰写”有多相似?也许您使用不同的网络模式?例如,主机模式的行为与默认模式不同。
  • 想象相同的docker-compose.yml 但不同的图像,这基本上是它们的唯一区别,我没有设置网络或任何东西......也许默认值不同,这就是为什么表现得那样...我说清楚了吗?
  • 你能帮我把它拼出来吗?您无法使用 docker inspect 返回的 ip 连接到 docker 容器吗?
  • 就是这样。我无法使用该 IP 地址连接到他们,我可以通过 localhost 和转发端口连接。我的 Web 容器将 80 转发到 5555,因此我可以通过 localhost:5555 到达该容器。虽然该容器返回的 IP 地址是 172.18.0.2,但我无法连接到 172.18.0.2 或 172.18.0.2:5555

标签: docker docker-compose docker-for-windows windows-container


【解决方案1】:

发件人:How to get a Docker container's IP address from the host?

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

【讨论】:

  • 我知道如何获取 IP,这就是我所说的我为 Windows 容器所做的事情......在与 Linux 容器通信时,IP 地址的行为方式不同
  • 您只能连接到“暴露”的端口。有关详细信息,请参阅此内容:stackoverflow.com/questions/22111060/…
  • 这不是我的意思,你没有理解问题或cmets
  • 好吧,我不确定 Mac,但在 Linux 中我已经使用过这种行为数千次了。该服务(假设端口 443 上的 nginx)正在容器中运行,并且在 Dockerfile 中我明确地“公开”443 端口。之后通过容器和端口的ip addr直接访问服务没有问题(例如172.17.0.2:443)。
【解决方案2】:

好的,所以,回答我自己的问题,我想要的是不可能的,至少在今天是这样。 有人写了一篇关于为什么我不能实现我想要的东西的好文章。话虽如此,它在 Windows 容器中是可行的,但它可能是一个暂时的“限制”。

帖子链接:https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/ 和 Docker 论坛链接:https://forums.docker.com/t/access-dockerized-services-via-the-containers-ip-address/21151

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2019-03-07
    • 1970-01-01
    • 2017-05-14
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多