【发布时间】:2019-06-11 10:56:37
【问题描述】:
我在一个 Docker 容器上运行 Tomcat 服务器。在另一个 docker 容器上,我希望能够访问该 Tomcat 服务器。所以,我要做的是使用 -p 选项将该端口映射到运行 Tomcat 服务器的 Docker 容器映射的端口。
简而言之,我有一个 Tomcat 容器,它是使用类似的东西运行的。
docker run ... -p X:8080 ...
还有像这样的其他 docker 容器
docker run ... -p X:X ...
但是,如果我尝试这样做,我会收到“端口已分配”错误。我该如何解决这个问题?
【问题讨论】:
-
您可以使用相同的端口号(例如
8080)拥有任意数量的容器,因为容器在它们的网络命名空间中运行并且没有冲突。但是,当您使用-p [host_port:container_port]将此端口绑定/发布到host端口时,您只能使用特定主机端口一次。 -
我知道,我说的是容器端口映射到的主机上的端口。就像上面例子中的 X。
-
是的,
X这里是host端口。你不能重复使用同一个号码。 -
另外,通过使用
docker run ...命令,您的容器会附加到不提供容器间DNS 的默认桥接网络。让 2 个容器通信的最简单方法是创建一个 user-defined bridge,然后您就可以在容器内部直接使用它们的名称,例如container_A:8080、container_B:8080。 -
这是一个巧妙的解决方案!
标签: docker networking