我真的不明白这里发生了什么。我只是想使用主机的公共ip,在发布的端口上,从一个停靠容器内部执行一个http请求,然后通过主机执行另一个码头容器请求。
这是我的装置。我有我的开发机器。我有一台有两个集装箱的码头主机。CONT_A在端口3000上监听和发布web服务。
DEV-MACHINE
HOST (Public IP = 111.222.333.444)
CONT_A (Publish 3000)
CONT_B

在我的开发机器上(一台完全不同的机器)
我可以卷曲而不出任何问题
curl http://111.222.333.444:3000 --> OK当我SSH进入主机时
我可以卷曲而不出任何问题
curl http://111.222.333.444:3000 --> OK当我在CONT_B中执行时
不可能只是暂停。平很好不过..。
docker exec -it CONT_B bash
$ curl http://111.222.333.444:3000 --> TIMEOUT
$ ping 111.222.333.444 --> OK为什么?
Ubuntu 16.04,Docker 1.12.3 (默认网络设置)
发布于 2016-12-15 20:18:44
我知道这并不是对问题的严格回答,但是有一种解决问题的更简单的方法。我会完全忘记为集装箱间通信发布港口。相反,创建一个覆盖网络使用码头群。您可以找到完整的指南这里,但本质上您可以执行以下操作:
//create network
docker network create --driver overlay --subnet=10.0.9.0/24 my-net
//Start Container A
docker run -d --name=A --network=my-net producer:latest
//Start Container B
docker run -d --name=B --network=my-net consumer:latest
//Magic has occured
docker exec -it B /bin/bash
> curl A:3000 //MIND BLOWN!然后,在容器内部,您可以只需卷起主机名A,它将为您解析(即使您开始缩放等等)。
如果您不热衷于使用Docker群,您还可以使用Docker遗留链接:
docker run -d --name B --link A:A consumer:latest它将链接A容器中的任何公开(未发布)端口。
最后,如果您开始使用关于链接和覆盖网络的production...forget,altogether...use Kubernetes :-)初始设置要困难一些,但是它们引入了一些概念和工具,使得连接和缩放容器集群变得更加容易!但这只是我个人的看法。
发布于 2019-07-12 16:30:05
通过使用--network host参数运行容器B,您可以简单地使用本地主机访问容器A,而不需要公共ip。
> docker run -d --name containerB --network host yourimagename:version使用上面的命令运行容器B之后,您可以从容器B中尝试curl容器A,如下所示
> docker exec -it containerB /bin/bash
> curl http://localhost:3000发布于 2022-02-26 21:37:29
当前的答案中没有一个解释为什么码头集装箱的行为与问题中所描述的一样。
Docker是为了向一个或多个容器提供主机资源的轻量级隔离。
默认情况下,码头网络与主机网络隔离,并使用桥梁网络 (默认情况下,也使用覆盖网络)进行容器间通信。

以及如何在没有码头网络的情况下解决问题。
从DockerVersion18.03开始,您可以使用
host.docker.internal主机名从Docker容器中连接到Docker主机。 这在用于Mac和Docker for Windows的Docker和Docker for Windows上工作得很好,但不幸的是,直到2020年12月Docker20.10.0发布后,Linux才支持这一点。 从20.10版本开始,Docker引擎现在还支持通过Linux上的host.docker.internal与Docker主机进行通信。 不幸的是,这在Linux上是行不通的,因为您需要添加额外的--add-host运行标志: -add=host.docker.内部:主机-网关 这是出于开发目的,不会在/Mac之外的生产环境中工作。
这样,您就不必将网络驱动程序更改为--network=host,并且仍然可以通过host.docker.internal访问主机。
https://stackoverflow.com/questions/41171115
复制相似问题