如何从本地主机浏览器访问Docker容器的4444端口服务?
如何从主机浏览器访问Docker容器内的4444端口
没问题,我来帮你搞定这个Docker端口访问的事儿!核心就是让Docker把容器里的4444端口“暴露”给主机,也就是端口映射。下面分不同情况给你具体操作方法:
一、如果容器还没启动:启动时直接配置映射
用docker run启动容器的时候,加上-p参数就能把容器端口和主机端口绑定,格式是主机端口:容器端口。比如你想让主机的4444端口直接对应容器的4444端口,命令这么写:
docker run -d -p 4444:4444 你的镜像名称
这里-d是让容器后台跑着,不用占着终端。之后直接在主机浏览器输入http://localhost:4444/grid/console就行;要是你访问的是远程主机,把localhost换成那台主机的IP地址就好。
要是主机的4444端口已经被别的程序占了,也没关系,换个端口映射就行,比如映射到8080:
docker run -d -p 8080:4444 你的镜像名称
这时候访问的URL就改成http://localhost:8080/grid/console。
二、如果容器已经在运行了:两种办法补做映射
要是容器已经启动起来了,也不用慌,有两种方式能搞定:
方法1:停止容器,重新启动加映射
先把容器停了:
docker stop 你的容器ID/容器名称
然后用带-p参数的命令重新启动,记得把之前启动时用的其他参数也带上(比如环境变量、挂载目录这些),举个例子:
docker run -d -p 4444:4444 -v /本地目录:/容器目录 你的镜像名称
重启完就能正常访问了。
方法2:修改Docker配置文件(适合不想重启容器的情况)
这个方法稍微绕一点,但不用重新创建容器:
- 先把Docker服务停了:
sudo systemctl stop docker # Linux系统这么操作 # Windows或Mac的话,直接在Docker Desktop里点停止服务就行 - 找到容器的配置文件,Linux下一般在
/var/lib/docker/containers/容器ID/hostconfig.json,Windows和Mac的存储路径可以在Docker设置里找到“数据存储”的位置。 - 打开
hostconfig.json,找到PortBindings字段,添加4444端口的映射:"PortBindings": { "4444/tcp": [ { "HostPort": "4444" } ] } - 再打开同目录下的
config.v2.json,找到ExposedPorts字段,加上:"ExposedPorts": { "4444/tcp": {} } - 保存好文件后,重启Docker服务:
sudo systemctl start docker - 最后启动容器:
docker start 你的容器ID/容器名称
这样操作完,主机浏览器就能访问对应的URL了。
三、结合你提供的docker inspect信息排查
要是能看到docker inspect的结果,还可以确认几个关键点:
- 看
NetworkSettings -> Ports字段,检查是不是已经有端口映射配置了; - 看
NetworkSettings -> IPAddress字段,拿到容器的内部IP,如果是bridge模式,也可以直接用http://容器内部IP:4444/grid/console访问,但这种方式不如端口映射靠谱,因为容器重启后IP可能会变; - 要是容器用的是
host网络模式(NetworkSettings -> NetworkMode显示host),那容器直接用主机的网络,不用做端口映射,直接访问http://localhost:4444/grid/console就行。
内容的提问来源于stack exchange,提问作者Adi Ohana




