¿Cómo publico un puerto UDP en Docker?

139

¿Cómo reenvío un puerto UDP desde mi contenedor Docker a la máquina host?

Nick Woodhams
fuente

Respuestas:

220

Use el indicador -p y agregue /udpsufijo al número de puerto.

-p 53160:53160/udp

Comando completo

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

Si está ejecutando boot2docker en Mac, asegúrese de reenviar los mismos puertos en boot2docker a su máquina local.

También puede documentar que su contenedor necesita recibir UDP usando EXPOSE en The Dockerfile(EXPOSE no publica el puerto):

EXPOSE 8285/udp

Aquí hay un enlace con más información de Docker Networking cubierta en los documentos del contenedor: https://docs.docker.com/config/containers/container-networking/ (Cortesía de Old Pro en los comentarios)

Nick Woodhams
fuente
3
(despotricar) Literalmente en ninguna parte de la documentación oficial, wow. "-p = []: Publica el puerto de un contenedor o un rango de puertos en el formato de host: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Aunque el ejemplo oficial menciona "-p 1234-1236: 1234-1236 / tcp", no hay coincidencias para "udp" o "protocolo" en toda la página .
Alexander Gonchiy
@AlexanderGonchiy Para no disculpar la documentación de la ejecución de Docker, pero el formato general para exponer los puertos a los que se refiere está cubierto en la documentación de Container Networking .
Old Pro
2
Expose solo debe ser el puerto / proto, no un par de puertos como el que tiene trabajo publicado. Y la exposición no publica el puerto y no es necesaria para publicar el puerto, es documentación.
BMitch