在Docker容器中获取宿主机的IP地址有几种常用方法,具体取决于你的网络配置和需求:
host.docker.internal
ping host.docker.internal
# 或者
nslookup host.docker.internal
这个名称会自动解析为宿主机的IP地址(在Docker for Mac/Windows和较新版本的Linux Docker中支持)。
ip route show | grep default | awk '{print $3}'
启动容器时通过环境变量传递宿主机IP:
docker run -e HOST_IP=$(hostname -I | awk '{print $1}') your_image
然后在容器中读取$HOST_IP
环境变量。
在docker-compose.yml中:
services:
your_service:
extra_hosts:
- "host.docker.internal:host-gateway"
awk '$2==00000000 && $8==00000000 {print $3}' /proc/net/route | sed 's/\(..\)\(..\)\(..\)\(..\)/\4.\3.\2.\1/'
host.docker.internal
默认可能不支持,需要添加--add-host=host.docker.internal:host-gateway
参数host.docker.internal
会自动解析为宿主机的IP选择哪种方法取决于你的具体使用场景和Docker环境配置。