网络 – 尝试浏览映射到Docker容器的端口时获取“ERR_CONNECTION_REFUSED”
我已经提取了一个Docker镜像:$docker pull ghost
并从图像运行一个容器:
$docker run --name test-ghost -p 8080:2368 -d ghost 7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
我的理解是-p开关将主机(8080)上的端口映射到Docker(2368)内的端口,这样我就可以从Docker外部,即从我的主机上击中Docker中运行的Web服务器.
但是,当我尝试在我的主机中浏览Chrome中的以下任何地址时:
http://localhost:8080/ http://0.0.0.0:8080/ http://127.0.0.1:8080/
我收到以下错误:
This webpage is not available ERR_CONNECTION_REFUSED
这似乎可能是连接问题,而不是容器内部的问题,因为当我检查容器内的运行进程时,似乎NodeJS正在运行:
$docker top test-ghost UID PID PPID ... CMD docker 4290 1028 ... npm docker 4324 4290 ... sh -c node index docker 4325 4324 ... node index
但似乎没有什么东西在监听端口8080:
$sudo lsof -n -i4TCP:8080 | grep LISTEN $
我也检查了我的MacOS防火墙已关闭.
我不希望这里有完整的解决方案,因为我知道我提供的信息很少.
我想知道的是,如何解决这个问题呢?
似乎Docker端口无法访问.
有没有办法找出端口映射不起作用的原因?或者Docker正在暴露哪些端口?也许我正在映射错误的内部端口?
还是有任何其他一般性的建议,我可能在这里做错了什么?
终于想出了如何使这项工作!我在MacOS上运行Docker并使用“Docker QuickStart Terminal”.
事实证明,导航到’localhost’,’127.0.0.1’等是错误的,因为看起来Docker设置了自己的主机:
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
__/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
当我使用上面给出的192.168.99.100时,一切正常.