适用于所有平台
Docker v 20.10及以上(自2020年12月14日起)
使用内部IP地址或连接到特殊DNS名称host.docker.internal,该名称将解析为主机使用的内部IP地址。
在Linux上,使用Docker命令,将--add host=host.Docker.internal:host gateway添加到Docker命令以启用此功能。
要在Linux上的Docker Compose中启用此功能,请在容器定义中添加以下行:
extra_hosts:
- "host.docker.internal:host-gateway"
对于较旧的macOS和Windows版本的Docker
Docker v 18.03及以上(自2018年3月21日起)
使用内部IP地址或连接到特殊DNS名称host.docker.internal,该名称将解析为主机使用的内部IP地址。
Linux支持待定https://github.com/docker/for-linux/issues/264
对于Docker的旧macOS版本
Mac版本17.12至18.02的Docker
同上,但改用docker.for.mac.host.internal。
Mac版Docker 17.06至17.11
同上,但改用docker.for.mac.localhost。
适用于Mac 17.05及以下版本的Docker
要从docker容器访问主机,必须将IP别名附加到网络接口。您可以绑定任何您想要的IP,只需确保您没有将其用于其他任何内容。
sudo ifconfig lo0别名123.123.123.123/24
然后确保您的服务器正在侦听上面提到的IP或0.0.0.0。如果它在本地主机127.0.0.1上侦听,它将不接受连接。
然后只需将docker容器指向该IP,即可访问主机!
为了测试,可以在容器内运行类似curl-X GET 123.123.123.123:3000的命令。
别名将在每次重新启动时重置,因此如果需要,请创建启动脚本。
此处的解决方案和更多文档:https://docs.docker.com/docker-for-mac/networking/#use-案例和解决方案