Jak opublikować port UDP na platformie Docker?

139

Jak przekazać port UDP z mojego kontenera Docker do komputera hosta?

Nick Woodhams
źródło

Odpowiedzi:

220

Użyj flagi -p i dodaj /udpsufiks do numeru portu.

-p 53160:53160/udp

Pełna komenda

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

Jeśli używasz boot2docker na Macu, pamiętaj, aby przekazać te same porty z boot2docker do twojego lokalnego komputera.

Możesz również udokumentować, że Twój kontener musi otrzymywać UDP za pomocą EXPOSE w Dockerfile(EXPOSE nie publikuje portu):

EXPOSE 8285/udp

Oto link z dodatkowymi informacjami na temat sieci Docker omówionymi w dokumentacji kontenera: https://docs.docker.com/config/containers/container-networking/ (dzięki uprzejmości Old Pro w komentarzach)

Nick Woodhams
źródło
3
(rant) Dosłownie nigdzie w oficjalnej dokumentacji, wow. "-p = []: Opublikuj port kontenera lub zakres portów w formacie hosta: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Chociaż oficjalny przykład wspomina „-p 1234-1236: 1234-1236 / tcp”, nie ma odpowiedników dla „udp” ani „protocol” na całej stronie .
Alexander Gonchiy,
@AlexanderGonchiy Nie żeby usprawiedliwić dokumentację dotyczącą uruchamiania platformy docker, ale ogólny format ujawniania portów, do których się ona odnosi, jest omówiony w dokumentacji dotyczącej sieci kontenerów .
Old Pro
2
Expose powinno być tylko port / proto, a nie parą portów, jak w przypadku publikacji pracy. A expose nie publikuje portu i nie jest potrzebne do publikowania portu, jest to dokumentacja.
BMitch