Como publico uma porta UDP no Docker?

139

Como encaminhar uma porta UDP do meu contêiner do Docker para a máquina host?

Nick Woodhams
fonte

Respostas:

220

Use o sinalizador -p e inclua o /udpsufixo no número da porta.

-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

Se você estiver executando o boot2docker no Mac, certifique-se de encaminhar as mesmas portas no boot2docker para a sua máquina local.

Você também pode documentar que seu contêiner precisa receber UDP usando EXPOSE em The Dockerfile(EXPOSE não publica a porta):

EXPOSE 8285/udp

Aqui está um link com mais informações do Docker Networking abordadas nos documentos do contêiner: https://docs.docker.com/config/containers/container-networking/ (Cortesia de Old Pro nos comentários)

Nick Woodhams
fonte
3
Literalmente, em nenhum lugar da documentação oficial, uau. "-p = []: Publique a porta de um contêiner ou um intervalo de portas no formato do host: ip: hostPort: containerPort | ip :: containerPort | hostPort: containerPort | containerPort". Embora o exemplo oficial mencione "-p 1234-1236: 1234-1236 / tcp", não há correspondências para "udp" ou "protocolo" em toda a página .
Alexander Gonchiy
@AlexanderGonchiy Não desculpe a documentação para a execução do docker, mas o formato geral para expor as portas às quais ele se refere está coberto na documentação da Rede de Contêiner .
Old Pro
2
A exposição deve ser apenas a porta / proto, não um par de portas como você tem para publicar. E expor não publica a porta e não é necessário publicá-la, é documentação.
BMitch 22/04/19