如何获取宿主主机ip地址并设置HTTP-proxy
本文探讨了在WSL2下设置docker代理的方式
命令行内设置代理的第一步,就是在您的命令行环境下,实现实时获取当前主机的主机物理地址
(ip:host
)
介绍如何去获取您的主机物理地址
普通Linux环境/Git-Bash等环境获取您的主机物理地址
在普通liunx环境内,127.0.0.1
是映射到主机物理地址的,而wsl2并不是这样
在git bash 中,因为git bash 是基于mingw的运行在Windows环境下的shell,
在git bash中,127.0.0.1
可以映射到主机物理地址
export HOST_IP=127.0.0.1
export HOST_PORT=1080
export PORXY_ADDR="http://${HOST_IP}:${HOST_PORT}"
代理软件要允许局域网设备访问
wsl2环境下获取您的主机物理地址
注意:你的代理工具必须设置为允许来自局域网的连接
wsl2环境下需要获取宿主主机的物理IP地址
宿主主机的IP地址是动态生成的,其本质上是你计算机的物理IP,随着路由器分配而变化
每次重启PC后,wsl2获取到的宿主主机的ip地址都不一样
在WSL2环境下,我们有下面几种方式查看主机物理地址:
ip route命令(不推荐)
windows下,输入下面的命令获取:
ip route | grep default | awk '{print $3}'
使用wsl2提供的获取IP服务
WSL2 可以通过 /etc/resolv.conf
文件中的 nameserver
的值作为 IP 地址来访问 Windows 中的服务.
cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'
# 获取 nameserver 值 export 到环境变量 `HOST_IP` 中
# 然后填写`HOST_PORT`,请替换成你的 Windows 本地代理端口
export HOST_IP=$(grep -oP '(?<=nameserver\ ).*' /etc/resolv.conf)
export HOST_PORT=1080 # 某代理默认端口
export PORXY_ADDR="http://${HOST_IP}:${HOST_PORT}"
使用docker内置服务器host.docker.internal获取主机物理地址
host.docker.internal
是一个虚拟网络地址
例如下面的这条命令
# HTTP [git]
git config --global http.https://github.com.proxy http://host.docker.internal:1080
Windows和MAC OS上都可以使用host.docker.internal
,
host.docker.internal
会解析出来你的宿主主机的物理ip地址。
在笔者电脑中,指的是笔者正在使用的WLAN网卡对应的IP V4 address。
WSL2下的localhost
以及127.0.0.1
并不能获取到宿主主机物理地址
你可以把host.docker.internal
用在一切需要获取宿主主机物理地址的情况,前提是你的docker
需要保持后台运行
# CUSTOM CONFIG
# export HOST_IP=$(grep -oP '(?<=nameserver\ ).*' /etc/resolv.conf)
export HOST_IP=http://host.docker.internal
export HOST_PORT=1080
export PORXY_ADDR="http://${HOST_IP}:${HOST_PORT}"
这里的 host.docker.internal 解析出来的是主机 IP,
MacOS 中还可以使用 docker.for.mac.localhost,
Win 环境还中使用 docker.for.win.localhost