Eu tirei uma imagem do Docker:
$ docker pull ghost
E execute um contêiner da imagem:
$ docker run --name test-ghost -p 8080:2368 -d ghost
7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
Meu entendimento é que a opção -p
mapeará uma porta no host (8080) para uma porta dentro do Docker (2368), para que eu possa acessar o servidor da Web em execução no Docker, a partir do Docker externo, ou seja, do meu host.
No entanto, quando tento navegar para qualquer um dos seguintes endereços no Chrome, a partir do meu anfitrião:
http://localhost:8080/
http://0.0.0.0:8080/
http://127.0.0.1:8080/
Eu recebo o seguinte erro:
This webpage is not available
ERR_CONNECTION_REFUSED
Isso parece ser um problema de conectividade, em vez de um problema dentro do contêiner, pois quando inspeciono os processos em execução dentro do contêiner, parece que o NodeJS está em execução:
$ docker top test-ghost
UID PID PPID ... CMD
docker 4290 1028 ... npm
docker 4324 4290 ... sh -c node index
docker 4325 4324 ... node index
Mas parece que nada está escutando na porta 8080:
$ sudo lsof -n -i4TCP:8080 | grep LISTEN
$
Também verifiquei e meu firewall do MacOS está desativado.
Eu não espero uma solução completa aqui, já que estou ciente de que as informações que eu forneci são mínimas.
O que eu estou querendo saber é como um problema seria resolvido?
Parece que a porta do Docker está inacessível.
Existe alguma maneira de descobrir por que o mapeamento de portas não funcionou? Ou quais portas estão sendo expostas pelo Docker? Talvez eu esteja mapeando a porta interna errada?
Ou há outras sugestões gerais sobre o que eu posso estar fazendo de errado aqui?