Um utilizador do CasaOS instalou várias aplicações Web que esperavam pela porta de contentor 5000. Só era possível aceder a uma aplicação, porque vários contentores tentavam publicar a mesma porta no anfitrião Debian. Alterar ambos os lados do mapeamento fez com que algumas aplicações deixassem de responder.
A regra é simples: mantenha inalterada a porta do contentor da aplicação, a menos que a documentação da própria aplicação indique que a porta de escuta é configurável. Altere apenas a porta do anfitrião.
Leia os mapeamentos de portas do Docker da esquerda para a direita
5001:5000
Neste mapeamento, 5001 é a porta do anfitrião utilizada no navegador e 5000 é a porta onde a aplicação escuta dentro do contentor. O guia oficial de publicação de portas do Docker utiliza o mesmo modelo anfitrião-para-contentor.
Mapeie duas aplicações que utilizam a porta 5000 para portas do anfitrião diferentes
| Aplicação | Porta do anfitrião | Porta do contentor | Endereço no navegador |
|---|---|---|---|
| MusicBrainz | 5001 | 5000 | http://SERVER-IP:5001 |
| HandBrake | 5002 | 5000 | http://SERVER-IP:5002 |
Cada combinação de endereço IP e porta do anfitrião tem de ser única. Vários contentores podem continuar a escutar internamente na porta 5000, porque os respetivos espaços de nomes de rede estão isolados.
Porque é que alterar a porta do contentor muitas vezes faz falhar a interface Web
Uma imagem pode iniciar o respetivo servidor Web numa porta interna fixa. Se o CasaOS mapear a porta 5001 do anfitrião para a porta 5001 do contentor, enquanto o processo continua a escutar na porta 5000, o Docker encaminha o tráfego para um socket vazio. O contentor pode parecer saudável, embora o navegador não receba qualquer resposta.
Altere a porta do contentor apenas quando a aplicação de origem disponibilizar uma definição ou variável de ambiente documentada que altere também a porta de escuta do processo.
Edite o campo correto no CasaOS
- Abra as definições da aplicação ou a configuração de instalação personalizada.
- Localize a entrada da porta que apresenta os valores do anfitrião e do contentor.
- Deixe o valor do contentor predefinido pela imagem.
- Escolha uma porta do anfitrião que esteja disponível.
- Guarde e recrie ou reinicie o contentor, conforme solicitado.
- Abra a aplicação através da nova porta do anfitrião.
Verifique antes de atribuir uma nova porta
Consulte a lista de aplicações do CasaOS ou a configuração do contentor para verificar os mapeamentos existentes. Considere também os serviços instalados diretamente no Debian, pois podem ocupar a mesma porta do anfitrião sem aparecerem como uma aplicação do CasaOS. Evite atribuir portas de infraestrutura comuns, como 22, 53, 80, 443 ou 445, a menos que compreenda o serviço existente.
A rede do anfitrião elimina esta flexibilidade
No modo de rede do anfitrião, o contentor partilha o espaço de nomes de rede do anfitrião e não pode remapear normalmente uma porta de escuta que já esteja a ser utilizada. A documentação da rede do anfitrião do Docker confirma que apenas um serviço pode associar-se a uma determinada porta do anfitrião.
Perguntas frequentes sobre conflitos de portas no CasaOS
Que número devo alterar?
Altere a porta do anfitrião, que é o primeiro número em HOST:CONTAINER.
Todas as aplicações podem utilizar a porta de contentor 5000?
Sim, se cada contentor estiver isolado e cada um publicar uma porta diferente no anfitrião.
Porque é que a aplicação foi instalada, mas não abriu?
O mapeamento pode apontar para uma porta do contentor onde a aplicação não está a escutar.
