Bagaimana cara mempublikasikan Port UDP di Docker?

139

Bagaimana cara meneruskan port UDP dari container Docker saya ke mesin host?

Nick Woodhams
sumber

Jawaban:

222

Gunakan tanda -p dan tambahkan /udpsufiks ke nomor port.

-p 53160:53160/udp

Perintah penuh

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

Jika Anda menjalankan boot2docker di Mac, pastikan untuk meneruskan port yang sama pada boot2docker ke komputer lokal Anda.

Anda juga dapat mendokumentasikan bahwa penampung Anda perlu menerima UDP menggunakan EXPOSE di The Dockerfile(EXPOSE tidak mempublikasikan port):

EXPOSE 8285/udp

Berikut ini tautan dengan info Jaringan Docker lainnya yang tercakup dalam dokumen kontainer: https://docs.docker.com/config/containers/container-networking/ (Atas kebaikan Old Pro di komentar)

Nick Woodhams
sumber
4
(kata-kata kasar) Secara harfiah tidak ada di dokumentasi resmi, wow. "-p = []: Publikasikan port container atau rentang port ke format host: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Meskipun contoh resmi menyebutkan "-p 1234-1236: 1234-1236 / tcp", tidak ada kecocokan untuk "udp" atau "protokol" di seluruh halaman .
Alexander Gonchiy
@AlexanderGonchiy Bukan untuk memaafkan dokumentasi untuk menjalankan buruh pelabuhan, tetapi format umum untuk mengekspos port yang dirujuknya tercakup dalam dokumentasi Container Networking .
Old Pro
2
Ekspos seharusnya hanya berupa port / proto, bukan pasangan port seperti Anda memiliki pekerjaan yang dipublikasikan. Dan mengekspos tidak mempublikasikan port dan tidak diperlukan untuk mempublikasikan port, itu dokumentasi.
BMitch