Как мне опубликовать UDP-порт в Docker?

139

Как перенаправить порт UDP из моего контейнера Docker на хост-компьютер?

Ник Вудхэмс
источник

Ответы:

220

Используйте флаг -p и добавьте /udpсуффикс к номеру порта.

-p 53160:53160/udp

Полная команда

sudo docker run -p 53160:53160 \
    -p 53160:53160/udp -p 58846:58846 \ 
    -p 8112:8112 -t -i aostanin/deluge /start.sh

Если вы используете boot2docker на Mac, обязательно перенаправьте те же порты на boot2docker на ваш локальный компьютер.

Вы также можете задокументировать, что ваш контейнер должен получать UDP, используя EXPOSE в Dockerfile(EXPOSE не публикует порт):

EXPOSE 8285/udp

Вот ссылка с дополнительной информацией о Docker Networking, описанной в документации по контейнерам: https://docs.docker.com/config/containers/container-networking/ (любезно предоставлено Old Pro в комментариях)

Ник Вудхэмс
источник
3
(Рант) Буквально нигде в официальной документации, вау. "-p = []: опубликовать порт контейнера или диапазон портов в формате хоста: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Хотя в официальном примере упоминается «-p 1234-1236: 1234-1236 / tcp», на всей странице нет совпадений с «udp» или «protocol» .
Александр Гончий
@AlexanderGonchiy Не извините документацию для запуска докера, но общий формат для представления портов, на которые он ссылается, описан в документации по Контейнерной сети .
Старый Pro
2
Expose должен быть только порт / протокол, а не пара портов, как у вас опубликовать работу. И expose не публикует порт и не нужен для публикации порта, это документация.
BMitch