Quando você expõe uma porta usando a seção ports
do arquivo de composição do docker, você está especificando um mapeamento de host:container
, portanto, espera-se que 9000 no contêiner seja acessado por 80 no host somente.
Você pode expor uma porta diretamente para outros contêineres link , mas não é possível especificar o número da porta externa, apenas o 9000 (não o 80).
Outra opção é usar o padrão embaixador, onde você tem um "embaixador", que é o caminho entre um consumidor e um provedor. link
Então, contêiner B - > recipiente Um embaixador - > recipiente A
Você pode expor a porta 80 no embaixador e, em seguida, o embaixador pode se conectar à porta 9000 do contêiner A.
À medida que você cria uma infraestrutura mais sofisticada, é possível ser mais criativo com os registros de serviço, de modo que os contêineres estejam se localizando por meio de um registro de serviço em vez de simples links de contêiner.
Por uma questão de boa prática, você geralmente não deve especificar a porta externa diretamente. Se você fizer isso e tentar executar várias cópias do contêiner no mesmo host de encaixe, haverá conflitos de porta. Ou se você estiver executando outro contêiner que tente expor a mesma porta externa, você também receberá conflitos de porta.