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端口影射了。容器的地址就是宿主机的地址,端口也是一样。