方法一
1、可以在使用 localhost
的地方替换 host.docker.internal
对于 mac
和 windows
,可以使用 host.docker.internal
替换 127.0.0.1
,如 mongodb://host.docker.internal:27017
2、对于 linux
可以使用:
创建一个桥接网络
下面的 localNet
是网络名字,可自行修改。关于 192.168.0.0
这个子网,也可以自行定义。
默认按照下面的命令,执行后将可以通过 192.168.0.1
访问宿主机。
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
使用 192.168.0.1
替换 127.0.0.1
,如 mongodb://192.168.0.1:27017
方法二
可以在启动 docker
服务的时候把宿主机的 ip
当作环境变量穿进去
docker run -d --name nginx --env hostip="172.17.32.60"
可以在容器里面 env|grep hostip
查看 ip
地址
在程序中可以使用代码查询这个环境变量
// cmd 可以传入 env|grep hostip
func Cmd(cmd string) []byte {
out, err := exec.Command("/bin/bash", "-c", cmd).Output()
if err != nil {
return nil
}
return out
}
拓展如何访问同一台机器上的其他 docker
……