Expor todos os portos para uma imagem do acoplador
EXPOSE 8080 61616 5672 61613 5445 1883
também começo os meus contentores com
docker run --network host -p 8080:8080 -p 61616:61616 -p 5672:5672 -p 61613:61613 -p 5445:5445 -p 1883:1883
Mas para resolver problemas, quero expor todos os portos.
tentei algo do género:
EXPOSE 1-65535
Mas isto dá um erro.
Qual é a melhor maneira de expor todas as portas do contentor?
3 answers
Ao executar com {[[0]} não há necessidade de mapear as portas. Todas as portas de contêineres do acoplador estarão disponíveis, uma vez que o modo de host de rede faz com que o contêiner use a pilha de rede do host.
Também o EXPOSE 8080 61616 5672 61613 5445 1883
não é necessário. Esta instrução não faz nada. É apenas uma forma de documentar quais os portos que precisam de ser mapeados.
O controlador de rede da máquina só funciona em máquinas Linux, e não é suportado no ambiente de trabalho Docker para Mac, no ambiente de trabalho Docker para Windows, ou no 'Docker EE' para Windows Server.
Mais informações sobre O portal de documentação do Estivador.
Se USAR host
a rede irá expor quase todas as portas, tal como está a executar a aplicação na máquina anfitriã. Se as opções do Porto forem usadas ao correr no modo de rede da máquina, estas opções são ignoradas com um aviso
Nota: dado que o contentor não tem o seu próprio endereço IP ao usar a rede do modo host, o mapeamento de portas não faz efeito, e a opção-p, --publish, -P e --publish-all são ignoradas, produzindo um aviso em vez disso:
WARNING: Published ports are discarded when using host network mode
Marca claro que a sua máquina é uma máquina Linux porque a rede de máquinas só é suportada por máquinas Linux.
Isto é mencionado na documentação do Docker. ver documentação específicaO controlador de rede da máquina só funciona em máquinas Linux, e não é suportado no ambiente de trabalho Docker para Mac, no ambiente de trabalho Docker para Windows, ou no 'Docker EE' para Windows Server.