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

Docker nmap one container from inside another?

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

我有两个容器。

容器 A 有一个暴露的端口,可以在 localhost:777.

上访问

所以如果我使用 nmap -p 777 localhost 我可以看到端口是打开的。

我进入容器B:

docker exec -it containerB bash

容器 B 中,我是否可以从上面使用相同的 nmap 命令来查看 容器 A 上的端口 777 开放了吗?

不,如果没有 --network="container:containerA" 参数,这是不可能的。

通常容器不共享同一个网络栈。这允许同一个端口可以在多个容器中使用,但每个容器都有自己的本地主机。

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

如果没有网络 arg,您可以做什么,以及您应该如何与另一个容器通信,是创建一个网络并将两个容器都放在网络中(或使用链接)。然后你可以通过它的名字访问另一个容器,比如 nmap -p 777 containerA

我能够根据找到的信息做到这一点 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