将Docker容器与网络中的主机进行通信

时间:2019-02-06 08:49:24

标签: sockets docker networking udp

是否可以将带有Socket的消息从Docker容器内部发送到部署它的主机的网络?我的意思是...

我有一台连接了两台主机的路由器。其中一个部署了一个带有图像的docker容器,该图像使用Python中的Socket发送UDP多播消息。网络中的另一台主机执行一个程序,该程序侦听该多播地址以接收UDP消息(但它不在docker容器内运行)。

我正在尝试使用以下命令运行容器:

docker run --name send-udp-container -p 192.168.0.100:5007:5007/udp udp-image

我要达到的目的是将主机的端口5007与带有容器的端口5007映射。因此,当容器将UDP消息发送到该端口时,它通过192.168.0.100 IP地址(这是我要用于与其他主机进行通信的接口)进行广播。

我知道可以使用此命令来共享网络来解决此问题:

docker run --name send-udp-container --network host udp-image

但是我宁愿避免共享网络。 有任何想法吗?

1 个答案:

答案 0 :(得分:0)

未经测试:

# create a network and set the gateway 
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynetwork

docker run --net=mynetwork --name send-udp-container udp-image

现在从容器内部,您应该可以到达192.168.0.100