在 Docker 容器内访问宿主机的端口

8 min read

在 Docker 容器内访问宿主机的端口,有下面四种方式:

  1. 使用 host.docker.internal 地址:在 Docker Desktop(包括 Windows 和 Mac)中,可以直接使用 host.docker.internal 来访问宿主机的端口。例如:

    curl http://host.docker.internal:宿主机端口
    
  2. 在 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:宿主机端口
      
  3. 通过 Docker 网络访问:在 Docker 中创建自定义网络并将容器加入该网络,使它们能够通过网络访问宿主机。以下是步骤:

    • 创建 Docker 网络:

      docker network create mynetwork
      
    • 启动容器并加入网络:

      docker run --network=mynetwork -d mycontainer
      
    • 使用宿主机 IP 地址和端口进行访问。

  4. 使用 Docker 映射端口:在启动容器时,通过 -p 选项将宿主机的端口映射到容器端口。例如:

    docker run -p 8080:80 mycontainer
    

    然后在容器内可以通过 localhost:80 访问宿主机的 8080 端口。