docker如何访问宿主机的localhost
乐果 发表于 2022 年 12 月 12 日
方法一
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
……
