默认情况下,docker容器可以调用主机的本地主机UDP?
我有一个docker容器,并且在虚拟机上安装了一个在端口812上侦听UDP的守护进程。容器在这个8125端口上使用UDP协议发送数据。
我试图通过启动容器与-p 8125:8125/udp
打开端口,但我得到以下错误:
Error starting userland proxy: listen udp 0.0.0.0:8125: bind: address already in use
这是有道理的,因为守护进程已经在这个端口上侦听。
那么如何configurationDocker,使容器可以发送UDP负载到外部守护进程?
只有当您想要收听没有发送的请求时才需要打开端口。 默认情况下,Docker为容器提供必要的networking名称空间,以便与主机或外部世界进行通信。
所以,你可以用两种方法:
-
在你的
--net host
docker run
使用--net host
,并发送请求到localhost:8125
在这种情况下,你的集装箱化的应用程序是有效地共享主机的networking堆栈。 所以本地主机指向已经在主机上运行的守护进程。 -
与容器networking网关(通常是
172.17.0.1
)或您的主机的主机名称对话。 然后你可以发送数据包到你的主机的守护进程。