Expor todos os portos para uma imagem do acoplador

Estou a resolver uma solução em que estou a montar um aglomerado de HA. Embora eu saiba que as portas necessárias para a aplicação para executar failover e failback, de alguma forma a solução dockerized não está funcionando. Suspeito que ainda não conheço alguns portos.

Actualmente, a minha declaração diz:
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?

 24
Author: Pang, 2018-03-16

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.

Em resumo, a execução {[[2]} irá expor todas as portas dos contentores.
 41
Author: yamenk, 2018-03-16 15:09:04

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.

 4
Author: pooh06, 2020-07-23 07:45:40

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.

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.

Isto é mencionado na documentação do Docker. ver documentação específica
 2
Author: Charith Jayasanka, 2020-07-11 06:19:46