docker通过容器访问宿主机器

通过容器里面访问宿主机ip发现是访问不通的,

分析,在docker容器里面使用localhost访问的是docker容器的本地ip,而不是宿主机的,要找的宿主机的ip可以在宿主机上运行:

ip addr show docker0

docker0这个网卡上有IP信息

可以看到ip172.17.0.1

通过在宿主机上把localhost改成172.17.0.1,即可访问到宿主机上的服务

curl http://172.17.0.1:8883/test

虽然返回错误,但是可以看到已经连通到宿主机了。


还有一种方法是:使用 host.docker.internal 或者 gateway.docker.internal 来替换localhost

即:

curl http://host.docker.internal:8000
curl http://gateway.docker.internal:8000

这种方式我没有测试成功

还有一种是使用host,docker 容器运行有三种网络配置:host, bridge,none,默认是bridge, none表示容器无法使用网络,bridge 需要用-p 参数把端口映射出来。如果用host,即表示宿主机与容器共用网络,那么容器的localhost 就是 宿主机的localhost。

docker run -d --name my_docker --network host ubuntu:18

使用--network host 就不需要进行-p端口影射了。容器的地址就是宿主机的地址,端口也是一样。

编辑于 2022-04-18 17:19