Docker从另一个容器中映射一个容器?

时间:2017-04-24 19:51:44

标签: docker docker-networking

我正在尝试了解与Docker的容器间通信。

我有两个容器。

容器A 有一个可在localhost:777上访问的公开端口。

因此,如果我使用nmap -p 777 localhost,我可以看到端口已打开。

我输入容器B

docker exec -it containerB bash

Container B 中,我可以使用上面的nmap命令来查看 Container A 上的端口777是否已打开?< / p>

2 个答案:

答案 0 :(得分:1)

如果没有--network="container:containerA" arg。

,这是不可能的

通常,容器不共享同一网络堆栈。这允许在多个容器中使用相同的端口,但每个容器都有自己的localhost。

使用--network="container:<container>" arg,containerB将共享网络堆栈,因此您可以使用localhost访问containerA的端口777。

如果没有网络arg,您应该如何与另一个容器进行通信,那就是创建一个网络并将两个容器放入网络(或使用链接)。然后,您可以通过其名称nmap -p 777 containerA

访问其他容器

答案 1 :(得分:0)

我能够根据找到的信息here执行此操作。

来自Docker主持人:

sudo ip addr show docker0

请注意docker0的ip地址,在我的情况下172.17.0.1。然后进入容器B:

docker exec -it <container> bash

然后:

nmap -p 777 172.17.0.1