扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
小编这次要给大家分享的是详解Docker容器如何互相连接,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
目前创新互联公司已为数千家的企业提供了网站建设、域名、网络空间、网站托管维护、企业网站设计、船营网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。docker容器间的互连通信有三种方法:
1.docker内部网络
涉及docker自己的网络栈。
安装docker后,系统会创建一个新的网络接口,名字是docker0,用于连接容器和宿主机,IP范围是172.16-172.30,
每个docker容器都会在这个接口上分配一个IP地址。
docker每创建一个容器就会创建一组互联的网络接口,一端是容器里的eth0接口,另一端则在宿主机以veth开头命名,
通过把每个veth接口绑定到docker0网桥,docker创建了一个虚拟子网,这个子网由宿主机和所有的docker容器共享,
实现容器和宿主机的通信连接,注意只有容器运行时veth接口才存在。
用内部网络实现容连互联的弊端:
2.docker networking
容器之间的连接用网络创建。
允许用户创建自己的网络,容器通过这个网络互相通信;
可以跨越不同的宿主机来通信,网络配置也更灵活;
可以在无需更新连接的情况下,停止、启动或者重启容器;
不必事先创建容器再去连接它,也不必关心容器的运行顺序,可以在网络内部获得容器名解析和发现;
和docker compose以及swarm进行了集成;
在docker网络内部启动的容器,会感知到所有在这个网络下运行的容器,
并通过/etc/hosts文件将这些容器的地址保存到本地DNS中,
网络内的任何主机都可以使用hostname或hostname.netname的形式来被解析访问,
如果任何一个容器重启了,其IP地址会自动在/etc/hosts文件中更新,
测试中发现/etc/hosts文件中好像没有新增其他容器的地址,但也能互相ping通;
一个容器可以同时加入多个网络,所以可以创建非常复杂的网络模型;
3.docker链接
在链接过程中要引用到容器的名字,且只能工作于同一台宿主机中。
在docker run启动容器时用参数 --link 创建两个容器间的 客户-服务 链接,
需要两个参数,一个是链接容器的名字,一个是链接的别名,即 --link redis:db,
被链接的容器是服务,链接让服务容器能够和客户容器通信,
客户容器可直接访问服务容器的任意公开端口,所以服务容器的端口不需要对本地宿主机公开,相对更加安全;
可以把多个客户容器链接到同一个服务容器,也可通过指定多次--link来链接到多个服务容器,
docker在容器的/etc/hosts文件和包含链接信息的环境变量里写入链接信息;
无论采用哪种方式,都可以创建一个Web应用程序栈,包含以下组件:
看完这篇关于详解Docker容器如何互相连接的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流