как связать два док-контейнера с хост-портом UDP - PullRequest
0 голосов
/ 28 марта 2019

Я использую два контейнера.Оба контейнера хотят прослушивать 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

Ответы [ 4 ]

0 голосов
/ 03 июля 2019

1) если данные передают UDP, привязанные к разным ip: same_port, вы можете подписать разные ip для одной и той же сетевой карты.2) использовать метод дублирования порта на хосте, т.е. порт 1234 -> 1235

0 голосов
/ 28 марта 2019

Нельзя прослушивать один и тот же порт 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

0 голосов
/ 28 марта 2019

Вы можете привязать различные IP-адреса на хост-компьютере, если на хост-компьютере доступно несколько сетевых карт.

0 голосов
/ 28 марта 2019

Вы должны переключить порты, потому что первый порт определяет ваш локальный интерфейс, а второй - порт вашего контейнера.

docker run --rm -p 1234:1234/udp -it ffmpeg
docker run --rm -p 5000:1234/udp -it ffmpeg2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...