Docker容器互相连接三种实现方法详解

Docker容器互相连接三种实现方法详解,第1张

Docker容器互相连接三种实现方法详解

本文详细介绍了Docker容器互联的三种完成方式。原文根据示例代码非常详细,对大家的学习培训或者工作有一定的参考价值,盆友一定要参考。

docker容器之间有三种相互通信的方式:

  • Docker内网:弱而强,不强烈推荐。
  • Docker联网:1.9版或更高版本,强烈推荐。
  • Docker连接:1.9之前的版本号可用。
  • 1.docker内网

    涉及到docker自己的网络栈。

    安装docker后,系统软件会新建一个名为docker0的网络套接字,用来连接容器和主机。IP范围为172.16-172.30。

    每个docker容器将为这个套接字分配一个IP地址。

    docker每创建一个容器,都会创建一组互联的网络套接字,一端是容器中的eth0套接字,另一端是主机中以veth命名的套接字。

    通过将每个veth套接字与docker0桥相关联,docker创建了一个虚拟子网,该子网由主机和所有docker容器共享。

    完成容器与主机的通信连接,注意veth套接字只在容器运行时存在。

    使用内部网络完成互联的缺点:

  • 在容器的应用软件中硬编码另一个容器的IP地址;
  • 容器重启后,IP地址很可能发生变化;
  • 缺乏方便性和灵活性。
  • 2.docker网络

    容器之间的连接是通过网络建立的。

    允许客户创建自己的网络,根据该网络,容器相互通信;

    能够超越不同主机进行通信,网络设备更加灵活;

    可以在不升级连接的情况下终止、启动或重启容器;

    不需要事先创建一个容器再连接,也不需要关注容器的 *** 作顺序,这样就可以在网络内部分析发现容器名称。

    并对接器组件及其集群进行集成;

    在docker网络内部启动的容器将识别在该网络下运行的所有容器。

    并根据/etc/hosts文档将该容器的详细地址存储在本地DNS中。
    网络中的所有服务器都可以通过hostname或hostname.netname进行分析和浏览,

    如果容器重新启动,它的IP地址将在/etc/hosts文档中自动升级。

    发现/etc/hosts文档中没有添加其他容器的详细地址,但是可以互相ping通。

    一个容器可以添加其他几个网络,所以可以创建更复杂的网络实体模型;

  • Dockernetworkcreate创建网络
  • Dockernetworkinspect查询网络的详细信息。
  • Dockernetworkls列出了当今系统软件中的所有网络。
  • Dockernetworkconnect将现有的容器连接到网络。
  • Docker网络断开将容器从网络终端断开。
  • Dockernetworkrm删除一个或多个网络
  • Docker网络修剪会删除所有未使用的网络
  • 3.docker连接[/s2/]

    在整个连接过程中要引入到容器中的名称,并且只在同一个主机中工作。

    当dockerrun启动一个容器时,需要主参数-link来创建两个容器之间的客户服务连接。

    必须有两个主要参数,一个是连接容器的名称,另一个是连接的昵称,即-linkredis:db,

    连接的容器是一个服务,连接允许服务容器与客户容器通信。

    客户可以立即浏览服务容器发布的端口号,因此服务容器的端口号不需要发布到本地主机,相对更安全;

    您可以将几个客户容器连接到同一个服务容器,也可以根据特定的时间链接连接到几个服务容器。

    Docker加载容器的/etc/hosts文档中的连接信息和包含连接信息的系统变量;

    无论选择哪种方法,您都可以创建一个Web应用程序堆栈,它包括以下组件:

  • Web服务器容器
  • Redis数据库查询容器
  • 两个容器之间的安全连接
  • 文章里的内容就这些了。期待对大家的学习和培训有所帮助,也期待大家的应用。

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/774501.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存