本文详细介绍了Docker容器互联的三种完成方式。原文根据示例代码非常详细,对大家的学习培训或者工作有一定的参考价值,盆友一定要参考。
docker容器之间有三种相互通信的方式:
1.docker内网
涉及到docker自己的网络栈。
安装docker后,系统软件会新建一个名为docker0的网络套接字,用来连接容器和主机。IP范围为172.16-172.30。
每个docker容器将为这个套接字分配一个IP地址。
docker每创建一个容器,都会创建一组互联的网络套接字,一端是容器中的eth0套接字,另一端是主机中以veth命名的套接字。
通过将每个veth套接字与docker0桥相关联,docker创建了一个虚拟子网,该子网由主机和所有docker容器共享。
完成容器与主机的通信连接,注意veth套接字只在容器运行时存在。
使用内部网络完成互联的缺点:
2.docker网络
容器之间的连接是通过网络建立的。
允许客户创建自己的网络,根据该网络,容器相互通信;
能够超越不同主机进行通信,网络设备更加灵活;
可以在不升级连接的情况下终止、启动或重启容器;
不需要事先创建一个容器再连接,也不需要关注容器的 *** 作顺序,这样就可以在网络内部分析发现容器名称。
并对接器组件及其集群进行集成;
在docker网络内部启动的容器将识别在该网络下运行的所有容器。
并根据/etc/hosts文档将该容器的详细地址存储在本地DNS中。
网络中的所有服务器都可以通过hostname或hostname.netname进行分析和浏览,
如果容器重新启动,它的IP地址将在/etc/hosts文档中自动升级。
发现/etc/hosts文档中没有添加其他容器的详细地址,但是可以互相ping通。
一个容器可以添加其他几个网络,所以可以创建更复杂的网络实体模型;
3.docker连接[/s2/]
在整个连接过程中要引入到容器中的名称,并且只在同一个主机中工作。
当dockerrun启动一个容器时,需要主参数-link来创建两个容器之间的客户服务连接。
必须有两个主要参数,一个是连接容器的名称,另一个是连接的昵称,即-linkredis:db,
连接的容器是一个服务,连接允许服务容器与客户容器通信。
客户可以立即浏览服务容器发布的端口号,因此服务容器的端口号不需要发布到本地主机,相对更安全;
您可以将几个客户容器连接到同一个服务容器,也可以根据特定的时间链接连接到几个服务容器。
Docker加载容器的/etc/hosts文档中的连接信息和包含连接信息的系统变量;
无论选择哪种方法,您都可以创建一个Web应用程序堆栈,它包括以下组件:
文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)