[英]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.