我正在尝试了解与Docker的容器间通信。
我有两个容器。
容器A 有一个可在localhost:777
上访问的公开端口。
因此,如果我使用nmap -p 777 localhost
,我可以看到端口已打开。
我输入容器B :
docker exec -it containerB bash
从 Container B 中,我可以使用上面的nmap
命令来查看 Container A 上的端口777是否已打开?< / p>
答案 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