You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从本地主机浏览器访问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配置文件(适合不想重启容器的情况)

这个方法稍微绕一点,但不用重新创建容器:

  1. 先把Docker服务停了:
    sudo systemctl stop docker  # Linux系统这么操作
    # Windows或Mac的话,直接在Docker Desktop里点停止服务就行
    
  2. 找到容器的配置文件,Linux下一般在/var/lib/docker/containers/容器ID/hostconfig.json,Windows和Mac的存储路径可以在Docker设置里找到“数据存储”的位置。
  3. 打开hostconfig.json,找到PortBindings字段,添加4444端口的映射:
    "PortBindings": {
        "4444/tcp": [
            {
                "HostPort": "4444"
            }
        ]
    }
    
  4. 再打开同目录下的config.v2.json,找到ExposedPorts字段,加上:
    "ExposedPorts": {
        "4444/tcp": {}
    }
    
  5. 保存好文件后,重启Docker服务:
    sudo systemctl start docker
    
  6. 最后启动容器:
    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

火山引擎 最新活动