簡體   English   中英

如何使用主機UDP端口連接兩個docker容器

[英]how to connect two docker container with host UDP port

我正在運行這兩個容器。 兩個容器都想監聽主機的UDP端口。 我通過UDP端口1234從主機獲取數據,我想運行兩個容器,它們將通過UDP端口監聽主機。 我認為兩個進程可以偵聽相同的UDP端口。

我創建了兩個容器ffmpeg1和ffmpeg2。

先跑:

docker run --rm -p 1234:1234/udp -it ffmpeg
docker run --rm -p 1234:5000/udp -it ffmpeg2

嘗試運行第二個容器時得到以下錯誤。

docker: Error response from daemon: driver failed programming external connectivity on endpoint reverent_germain (9915c14466f78f3ae2215d9e53edc502a9b6fff81f08f05f52d79088): Bind for 0.0.0.0:1234 failed: port is already allocated.
ERRO[0000] error waiting for container: context canceled

您必須切換端口,因為第一個端口定義了本地接口,第二個端口定義了容器端口。

docker run --rm -p 1234:1234/udp -it ffmpeg
docker run --rm -p 5000:1234/udp -it ffmpeg2

您無法在一台主機上偵聽相同的UDP端口。 所以在第二個容器中,讓我們使用另一個端口,例如:1235

docker run --rm -p 1235:5000/udp -it ffmpeg2

或者在一個主機上。 您可以通過創建網絡直接從容器調用
1)創建新網絡:

$ docker network create ffmpeg

2)將容器連接到網絡

$ docker run --rm --name=ffmpeg --net=ffmpeg -it ffmpeg
$ docker run --rm --name=ffmpeg2 --net=ffmpeg -it ffmpeg

3)現在您可以通過容器名稱ffmpeg,ffmpeg2直接從容器調用

如果主機上有多個網卡,則可以綁定到主機上的不同IP。

1)如果數據是廣播UDP,綁定到不同的ip:same_port,你可以將不同的ip簽名到同一個網卡。 2)在主機上使用端口復制方法,即端口1234 - > 1235

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM