在 Docker 容器内访问宿主机的端口,有下面四种方式:
-
使用
host.docker.internal
地址:在 Docker Desktop(包括 Windows 和 Mac)中,可以直接使用host.docker.internal
来访问宿主机的端口。例如:curl http://host.docker.internal:宿主机端口
-
在 Linux 上配置宿主机的 IP 地址:
-
查找宿主机的 IP 地址。例如,使用以下命令可以获取宿主机的 IP 地址:
ip route | grep default | awk '{print $3}' docker inspect <container_id> # 查看getway网关字段 通过网关来访问宿主机端口
-
假设获取的 IP 地址是
192.168.1.1
,则在容器中可以通过此 IP 地址访问宿主机的端口:curl http://192.168.1.1:宿主机端口
-
-
通过 Docker 网络访问:在 Docker 中创建自定义网络并将容器加入该网络,使它们能够通过网络访问宿主机。以下是步骤:
-
创建 Docker 网络:
docker network create mynetwork
-
启动容器并加入网络:
docker run --network=mynetwork -d mycontainer
-
使用宿主机 IP 地址和端口进行访问。
-
-
使用 Docker 映射端口:在启动容器时,通过
-p
选项将宿主机的端口映射到容器端口。例如:docker run -p 8080:80 mycontainer
然后在容器内可以通过
localhost:80
访问宿主机的8080
端口。