I have pulled a Docker image:
$ docker pull ghost
And run a container from the image:
$ docker run --name test-ghost -p 8080:2368 -d ghost
7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
My understanding is that the -p
switch will map a port on the host (8080) to a port inside Docker (2368), so that I can hit the web server running within Docker, from outside docker, i.e. from my host.
However, when I try to browse to any of the following addresses in Chrome, from my host:
http://localhost:8080/
http://0.0.0.0:8080/
http://127.0.0.1:8080/
I get the following error:
This webpage is not available
ERR_CONNECTION_REFUSED
This seems like it might be a connectivity issue, rather than a problem inside the container, as when I inspect the running processes inside the container, it appears that NodeJS is running:
$ docker top test-ghost
UID PID PPID ... CMD
docker 4290 1028 ... npm
docker 4324 4290 ... sh -c node index
docker 4325 4324 ... node index
But it appears nothing is listening on port 8080:
$ sudo lsof -n -i4TCP:8080 | grep LISTEN
$
I also checked and my MacOS firewall is turned off.
I don't expect a full solution here, as I'm aware the information I've given is minimal.
What I'm wondering is, how would one go about fixing such a problem?
It seems that the Docker port is unaccessible.
Is there some way of finding out why the port mapping didn't work? Or what ports are being exposed by Docker? Perhaps I'm mapping the wrong internal port?
Or are there any other general suggestions as to what I might be doing wrong here?