## 在容器内访问宿主机的端口 * **Windows / macOS:** 直接使用:`http://host.docker.internal:11434` > 这是 Docker 官方为这两个平台内置的特殊域名,会自动解析到宿主机的 IP。 > * **Linux:** 使用:`http://172.17.0.1:11434`(通常是 docker0 网桥的默认地址) 或者在启动容器时添加参数 `--add-host=host.docker.internal:host-gateway`,然后同样使用 `http://host.docker.internal:11434`。 ## 容器绕过WSL直接访问Windows代理 最重要的是获取**windows IP**,它能在容器中成功访问到。可使用以下命令获取: ```bash ip route show | grep default | awk '{print $3}' ``` [font color="Gold"]注意下文将用``指这里获取到的IP[/font] ### 方法一:全局,所有容器都走代理(不推荐) * 在 WSL 中执行:`nano ~/.docker/config.json` * 输入以下内容: ```json { "proxies": { "default": { "httpProxy": "http://:10808", "httpsProxy": "http://:10808", "noProxy": "localhost,127.0.0.1" } } } ``` *注:这样当你执行 `docker run` 或 `docker build` 时,Docker 会自动把这些代理信息注入到容器的环境变量中。* ### 方法二:指定容器走代理,修改compose [font color="HotPink "]docker-compose.yml[/font] ```yaml services: service_name_change_it: image: container_name: restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" ports: - "127.0.0.1:${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}" volumes: - /mnt/g/to/your/:/app/to/ environment: - HTTP_PROXY=http://${WINDOWS_HOST_IP}:10808 - HTTPS_PROXY=http://${WINDOWS_HOST_IP}:10808 - NO_PROXY=localhost,127.0.0.1,.local,host.docker.internal,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 - TZ=Asia/Shanghai - WEBSERVER_PORT=${WEBSERVER_PORT:-8080} ``` [font color="HotPink "].env[/font] ``` WINDOWS_HOST_IP= WEBSERVER_PORT=8765 ``` 当然也可以直接运行容器(但是写到compose方便以后修改和重建,所以推荐compose): ```bash docker run -e HTTP_PROXY="http://:7890" \ -e HTTPS_PROXY="http://:7890" \ -e NO_PROXY="localhost,127.0.0.1,.local,host.docker.internal,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \ my_image ``` Loading... ## 在容器内访问宿主机的端口 * **Windows / macOS:** 直接使用:`http://host.docker.internal:11434` > 这是 Docker 官方为这两个平台内置的特殊域名,会自动解析到宿主机的 IP。 > * **Linux:** 使用:`http://172.17.0.1:11434`(通常是 docker0 网桥的默认地址) 或者在启动容器时添加参数 `--add-host=host.docker.internal:host-gateway`,然后同样使用 `http://host.docker.internal:11434`。 ## 容器绕过WSL直接访问Windows代理 最重要的是获取**windows IP**,它能在容器中成功访问到。可使用以下命令获取: ```bash ip route show | grep default | awk '{print $3}' ``` <span style='color:Gold'>注意下文将用`<Windows IP>`指这里获取到的IP</span> ### 方法一:全局,所有容器都走代理(不推荐) * 在 WSL 中执行:`nano ~/.docker/config.json` * 输入以下内容: ```json { "proxies": { "default": { "httpProxy": "http://<Windows IP>:10808", "httpsProxy": "http://<Windows IP>:10808", "noProxy": "localhost,127.0.0.1" } } } ``` *注:这样当你执行 `docker run` 或 `docker build` 时,Docker 会自动把这些代理信息注入到容器的环境变量中。* ### 方法二:指定容器走代理,修改compose <span style='color:HotPink '>docker-compose.yml</span> ```yaml services: service_name_change_it: image: <change it> container_name: <change it> restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" ports: - "127.0.0.1:${WEBSERVER_PORT:-8080}:${WEBSERVER_PORT:-8080}" volumes: - /mnt/g/to/your/:/app/to/ environment: - HTTP_PROXY=http://${WINDOWS_HOST_IP}:10808 - HTTPS_PROXY=http://${WINDOWS_HOST_IP}:10808 - NO_PROXY=localhost,127.0.0.1,.local,host.docker.internal,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 - TZ=Asia/Shanghai - WEBSERVER_PORT=${WEBSERVER_PORT:-8080} ``` <span style='color:HotPink '>.env</span> ``` WINDOWS_HOST_IP=<Windows IP> WEBSERVER_PORT=8765 ``` 当然也可以直接运行容器(但是写到compose方便以后修改和重建,所以推荐compose): ```bash docker run -e HTTP_PROXY="http://<Windows IP>:7890" \ -e HTTPS_PROXY="http://<Windows IP>:7890" \ -e NO_PROXY="localhost,127.0.0.1,.local,host.docker.internal,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \ my_image ``` 最后修改:2026 年 02 月 01 日 © 允许规范转载 赞 别打赏,我怕忍不住购买辣条与续命水