docker容器通过宿主机ip中转实现容器之间相互调用
·
一般每个容器,都会映射一个端口到宿主机中,方便在宿主机上访问,例如ngnix,mysql,redis等等。
但是我们有一种常见的场景,就是a容器,需要通过宿主机的端口映射,调用b容器的服务,这里如果在a容器内部配置localhost/127.0.0.1/0.0.0.0:port都是不会起作用的,因为容器和容器之间的ip是隔离的,无法互相通过本地端口访问。
一个办法就是在docker run中把宿主机的端口映射到容器中,但是这样最痛苦的地方就是,每当我在容器中想多添加一个服务,那就得重新run。
个人认为更好的办法,是获取宿主机的ip, 然后在容器内部配置宿主机的ip, 就可以访问到b容器的服务。参考这里(其实在docker run中指定环境变量的办法也不错,不过在docker公服下载的时候,往往都是直接拷贝现成run命令)得到方法:
/sbin/ip route|awk ‘/default/ { print $3 }’
得到的宿主机ip, 加上对应的端口,就可以访问其他容器的服务了
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)