macOS系统Docker容器无法访问宿主机,host.docker.internal等地址均无效
问题解决方案
1. 补充域名解析参数
如果你的宿主机是Linux系统,Docker默认不会自动注入host.docker.internal的域名解析规则,你使用的20.10+版本Docker支持手动添加该映射,需要在docker run命令中新增参数--add-host=host.docker.internal:host-gateway。
2. 调整后的运行命令
docker run --add-host=host.docker.internal:host-gateway -p 8881:8881 -p 8882:8882 -v /Users/xxx/dev/btc/impervious/config/alice-config-docker.yml:/app/config/config.yml -v /Users/xxx/.polar/networks/1/volumes/lnd/alice/tls.cert:/app/lnd/tls.cert -v /Users/xxx/.polar/networks/1/volumes/lnd/alice/data/chain/bitcoin/regtest/admin.macaroon:/app/lnd/admin.macaroon -it impant/imp-releases:v0.1.4
3. 修改Polar节点监听配置
你当前的Polar闪电节点默认监听127.0.0.1:10001,仅允许宿主机本地请求访问,Docker网桥过来的请求会被拒绝。需要进入Polar的LND节点配置,将GRPC监听地址修改为0.0.0.0:10001,或者放行Docker网桥默认子网172.17.0.0/16的访问权限。
4. 验证连通性
容器启动后先进入容器内部执行以下命令排查链路:
- 执行
ping host.docker.internal,确认域名能正常解析到宿主机IP - 执行
nc -zv host.docker.internal 10001,确认10001端口连通正常
两项验证通过后再启动impervious服务即可正常连接节点,同时端口映射规则也不会失效。
内容的提问来源于stack exchange,提问作者1977
相关产品推荐
相关产品推荐

