Docker 取得宿主機內網IP

Docker 取得宿主機內網IP

在使用 Docker 容器時,我們經常需要從容器內部連接到宿主機(也就是運行 Docker 的電腦)上的服務。但是,宿主機的 IP 地址可能會變動,特別是在不同的網絡環境中,每次都要手動查找和輸入 IP 地址既麻煩又容易出錯。

Mac 和 Windows的 Docker Desktop :

Docker Desktop 提供了一個特殊的 DNS 名稱 host.docker.internal,它可以自動解析為宿主機的 IP 地址。這樣無論宿主機的 IP 如何變化,容器內部都可以使用這個固定的名稱來訪問宿主機。

Linux:

無法默認不支持直接使用 host.docker.internal 需要額外配置 。

  • Docker run

需添加--add-host=host.docker.internal:host-gateway

  • Docker Compose

需額外添加配置 extra_hosts 參數

services: 
  node-test: 
    image: node:16-alpine 
    container_name: node-test 
    stdin_open: true 
    tty: true 
    extra_hosts: # <--- 這邊這邊 
      - "host.docker.internal:host-gateway"