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
我正在尝试了解与 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