使用 netcat 通信 docker 中的两个容器

Communicate two containers in docker with netcat

我想在 docker 中通信两个容器,我正在使用 netcat 进行测试。首先,我创建了 Dockefile:

FROM ubuntu
WORKDIR /root
RUN apt-get update && apt-get install netcat iputils-ping -y

并添加图片:

docker build . -t ubuntu_netcat

我还创建了一个新网络:

docker network create --driver bridge nettest

然后我运行两个容器:

docker run --net=nettest --expose=8080 -it --name pc1 ubuntu_netcat
docker run --net=nettest --link=pc1 -it --name pc2 ubuntu_netcat

在第一个容器 (pc1) 我用 netcat 命令监听端口 8080:

nc -vlk 8080

我希望从第二个容器 (pc2) 与它通信,执行:

nc -v pc1 8080

但我刚收到一个连接被拒绝的消息:

root@c592b2015439:~# nc -v pc1 8080
pc1.nettest [172.18.0.2] 8080 (?) : Connection refused

我一直在查看 docker 文档,但一切似乎都是正确的。事实上,我可以成功地在容器之间执行 ping,因此它们可以相互访问,但我的端口有问题。 ¿我做错了什么?

谢谢

netcat 在 Ubuntu 上的这个版本似乎不像往常那样听。您必须为端口指定 -p(即使选项似乎将端口作为位置选项)。

您的 netcat 侦听器命令应该是:

nc -vlkp 8080