Comment publier un port UDP sur Docker?

139

Comment transférer un port UDP de mon conteneur Docker vers la machine hôte?

Nick Woodhams
la source

Réponses:

220

Utilisez l'indicateur -p et ajoutez un /udpsuffixe au numéro de port.

-p 53160:53160/udp

Commande complète

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

Si vous exécutez boot2docker sur Mac, assurez-vous de transférer les mêmes ports sur boot2docker vers votre machine locale.

Vous pouvez également documenter que votre conteneur doit recevoir UDP en utilisant EXPOSE dans The Dockerfile(EXPOSE ne publie pas le port):

EXPOSE 8285/udp

Voici un lien avec plus d'informations sur le réseau Docker couvertes dans la documentation du conteneur: https://docs.docker.com/config/containers/container-networking/ (avec l'aimable autorisation de Old Pro dans les commentaires)

Nick Woodhams
la source
3
(diatribe) Littéralement nulle part dans la documentation officielle, wow. "-p = []: Publie le port d'un conteneur ou une plage de ports au format d'hôte: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Bien que l'exemple officiel mentionne "-p 1234-1236: 1234-1236 / tcp", il n'y a aucune correspondance pour "udp" ou "protocole" sur toute la page .
Alexander Gonchiy
@AlexanderGonchiy Ne pas excuser la documentation pour l'exécution de docker, mais le format général pour exposer les ports auxquels il fait référence est couvert dans la documentation de Container Networking .
Old Pro
2
Expose ne doit être que le port / proto, pas une paire de ports comme celle que vous avez avec Work Publier. Et expose ne publie pas le port et n'est pas nécessaire pour publier le port, c'est de la documentation.
BMitch