• 第 5 章 网络


    容器间通信的三种方式

    (1)IP 通信

    两个容器要能通信,必须要有属于同一个网络的网卡。

    满足这个条件后,容器就可以通过 IP 交互了。具体做法是在容器创建时通过 --network 指定相应的网络,或者通过 docker network connect 将现有容器加入到指定网络。

     

    (2)Docker DNS Server

    通过 IP 访问容器虽然满足了通信的需求,但是不够灵活。在部署应用之前可能无法确定 IP,部署之后再指定要访问的 IP 比较麻烦。对于这个问题,可以通过 docker 自带的 DNS 服务解决。

    从 Docker 1.10 版本开始,docker daemon 实现了一个内嵌的 DNS server,使容器可以直接通过“容器名”通信。方法很简单,只要在启动时用 --name 为容器命名就可以了。

     

    启动两个容器 bbox1 和 bbox2:

    docker run -it --network=my_net2 --name=bbox1 busybox

    docker run -it --network=my_net2 --name=bbox2 busybox

    然后,bbox1 就可以直接 ping 到 bbox2 了:

    使用 docker DNS 有个限制:只能在 user-defined 网络中使用。也就是说,默认的 bridge 网络是无法使用 DNS 的。

     

    (3)joined 容器

    joined 容器非常特别,它可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信。

    例子:

    创建一个 web1 ,并查看网卡信息:

    然后创建 busybox 容器并通过 --network=container:web1 指定 jointed 容器为 web1,并查看一下网卡信息:

    busybox 和 web1 的网卡 mac 地址与 IP 完全一样,它们共享了相同的网络栈。

    busybox 可以直接用 127.0.0.1 访问 web1 的 http 服务。

    joined 容器非常适合以下场景:

    不同容器中的程序希望通过 loopback 高效快速地通信,比如 web server 与 app server。

    希望监控其他容器的网络流量,比如运行在独立容器中的网络监控程序。

     

    ----------------------------------------引用来自--------------------------------------------------

    https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587693&idx=1&sn=0f0b0b7e41d8edb0ed5f8a0b4224a0db&chksm=8d3080f4ba4709e22f4baf33de67fedd4f351784c77d97a97a6477a6a522ef5faaa90e612550&scene=21#wechat_redirect

  • 相关阅读:
    angularJS之基础知识(一)
    angularJS之$http:与服务器交互
    angualrJS之表单验证
    python实现命令行中的进度条原理
    通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标
    关于ArcGIS API for JavaScript中basemap的总结介绍(一)
    初学JAVA--分支语句
    移动端开发通用适配
    js中Number.toFixed()方法的理解
    <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑
  • 原文地址:https://www.cnblogs.com/gsophy/p/10432696.html
Copyright © 2020-2023  润新知