通过netcat与docker通信两个容器

我想在Docker中传达两个容器,我正在使用netcat进行testing。 首先我创build了Dockefile:

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

并添加了图像:

 docker build . -t ubuntu_netcat 

我也创build了一个新的networking:

 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操作,所以它们可以连接到另外一个,但是我的端口有问题。 我究竟做错了什么?

谢谢

它看起来像Ubuntu上的这个版本的netcat不像通常那样听。 您必须为端口指定-p (即使这些选项似乎具有端口作为位置选项)。

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

 nc -vlkp 8080