1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    docker容器間跨宿主機通信-基于overlay的實現方法_docker

    來源:腳本之家  責任編輯:小易  

    overlay網絡解析

    內置跨主機的網絡通信一直是Docker備受期待的功能,在1.9版本之前,社區中就已經有許多第三方的工具或方法嘗試解決這個問題,例如Macvlan、Pipework、Flannel、Weave等。

    雖然這些方案在實現細節上存在很多差異,但其思路無非分為兩種: 二層VLAN網絡和Overlay網絡

    簡單來說,二層VLAN網絡解決跨主機通信的思路是把原先的網絡架構改造為互通的大二層網絡,通過特定網絡設備直接路由,實現容器點到點的之間通信。這種方案在傳輸效率上比Overlay網絡占優,然而它也存在一些固有的問題。

    這種方法需要二層網絡設備支持,通用性和靈活性不如后者。

    由于通常交換機可用的VLAN數量都在4000個左右,這會對容器集群規模造成限制,遠遠不能滿足公有云或大型私有云的部署需求; 大型數據中心部署VLAN,會導致任何一個VLAN的廣播數據會在整個數據中心內泛濫,大量消耗網絡帶寬,帶來維護的困難。

    相比之下,Overlay網絡是指在不改變現有網絡基礎設施的前提下,通過某種約定通信協議,把二層報文封裝在IP報文之上的新的數據格式。這樣不但能夠充分利用成熟的IP路由協議進程數據分發;而且在Overlay技術中采用擴展的隔離標識位數,能夠突破VLAN的4000數量限制支持高達16M的用戶,并在必要時可將廣播流量轉化為組播流量,避免廣播數據泛濫。

    因此,Overlay網絡實際上是目前最主流的容器跨節點數據傳輸和路由方案。

    容器在兩個跨主機進行通信的時候,是使用overlay network這個網絡模式進行通信;如果使用host也可以實現跨主機進行通信,直接使用這個物理的ip地址就可以進行通信。overlay它會虛擬出一個網絡比如10.0.2.3這個ip地址。在這個overlay網絡模式里面,有類似于服務網關的地址,然后把這個包轉發到物理服務器這個地址,最終通過路由和交換,到達另一個服務器的ip地址。

    1.png

    環境介紹

    hostname ip 系統版本
    cdh1 10.30.10.111 centos7
    cdh2 10.30.10.112 centos7

    consul安裝配置

    要實現overlay網絡,我們會有一個服務發現。比如說consul,會定義一個ip地址池,比如10.0.2.0/24之類的。上面會有容器,容器的ip地址會從上面去獲取。獲取完了后,會通過ens33來進行通信,這樣就可以實現跨主機的通信。

    在這里插入圖片描述

    consul通過docker部署在cdh1,首先需要修改cdh1中的docker配置并重啟

    [root@cdh1 /]# vim /etc/docker/daemon.json
    //添加以下配置
    "live-restore":true
    [root@cdh1 /]# systemctl restart docker

    “live-restore”:true 此配置的作用為在docker守護程序停止或重啟的時候,容器依然可以保持運行

    在cdh1下載consul鏡像并啟動

    [root@cdh1 /]# docker pull consul
    [root@cdh1 /]# docker run -d -p 8500:8500 -h consul --name consul consul

    修改cdh1中的docker配置并重啟

    [root@cdh1 /]# vim /etc/docker/daemon.json
    # 添加以下兩行配置
    "cluster-store": "consul://10.30.10.111:8500"
    "cluster-advertise": "10.30.10.111:2375"
    [root@cdh1 /]# systemctl restart docker

    修改cdh2中的docker配置并重啟

    [root@cdh2 /]# vim /etc/docker/daemon.json
    # 添加以下兩行配置
    "cluster-store": "consul://10.30.10.111:8500"
    "cluster-advertise": "10.30.10.112:2375"
    [root@cdh2 /]# systemctl restart docker

    cluster-store指定的是consul服務地址,因為consul服務運行在cdh1的8500端口,所以兩臺機器的cluster-store值均為consul://10.30.10.111:8500
    cluster-advertise指定本機與consul的通信端口,所以指定為本機的2375端口

    此時可以通過http://10.30.10.111:8500/訪問consul地址
    Key/Value菜單中的docker-nodes目錄中可以看到cdh1和cdh2兩個docker節點,代表consul配置成功。

    在這里插入圖片描述

    創建overlay網絡

    此時我們可以創建overlay網絡,首先查看目前節點中已有的網絡類型

    [root@cdh1 /]# docker network ls
    NETWORK ID   NAME    DRIVER    SCOPE
    ab0f335423a1  bridge    bridge    local
    b12e70a8c4e3  host    host    local
    0dd357f3ecae  none    null    local

    然后在cdh1的docker節點創建overlay網絡,因為此時consul服務發現已經正常運行,且cdh1和cdh2的docker服務已經接入,所以此時overlay網絡是全局創建的,在任何一臺宿主機創建一次即可。

    [root@cdh1 /]# docker network create -d overlay my_overlay
    cafa97c5cf9d30dd6cef08a5e9710074c828cea3fdd72edb45315fb4b1bfd84c
    [root@cdh1 /]# docker network ls
    NETWORK ID   NAME    DRIVER    SCOPE
    ab0f335423a1  bridge    bridge    local
    b12e70a8c4e3  host    host    local
    cafa97c5cf9d  my_overlay   overlay    global
    0dd357f3ecae  none    null    local

    此時可以看到,創建的overlay網絡,標識為golbal。我們可以查看cdh2的網絡,可以發現overlay網絡也已經創建完畢。

    [root@cdh2 ~]# docker network ls
    NETWORK ID   NAME    DRIVER    SCOPE
    90d99658ee8f  bridge    bridge    local
    19f844200737  host    host    local
    cafa97c5cf9d  my_overlay   overlay    global
    3986fe51b271  none    null    local

    網絡測試

    創建完成后,我們可以在cdh1和cdh2中指定overlay網絡創建docker容器,并進行測試,查看是否可以跨宿主機通信。

    在cdh1中創建名稱為master的容器,并查看其IP

    [root@cdh1 /]# docker run -itd -h master --name master --network my_overlay centos7_update /bin/bash
    [root@cdh1 /]# docker inspect -f "{{ .NetworkSettings.Networks.my_overlay.IPAddress}}" master
    10.0.0.2

    在cdh1中創建名稱為slaver的容器,并查看其IP

    [root@cdh2 ~]# docker run -itd -h slaver --name slaver --network my_overlay centos7_update /bin/bash
    [root@cdh2 ~]# docker inspect -f "{{ .NetworkSettings.Networks.my_overlay.IPAddress}}" slaver
    10.0.0.3

    此時進入兩臺容器中,互相ping對方的IP,查看是否成功通信

    [root@cdh1 ~]# docker exec -it master /bin/bash
    [root@master /]# ping 10.0.0.3
    PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
    64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.587 ms
    64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.511 ms
    64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.431 ms
    64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.551 ms
    64 bytes from 10.0.0.3: icmp_seq=5 ttl=64 time=0.424 ms
    ^C
    --- 10.0.0.3 ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4000ms
    rtt min/avg/max/mdev = 0.424/0.500/0.587/0.070 ms
    
    [root@cdh2 ~]# docker exec -it slaver /bin/bash
    [root@slaver /]# ping 10.0.0.2
    PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
    64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.499 ms
    64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.500 ms
    64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.410 ms
    64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.370 ms
    ^C
    --- 10.0.0.2 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3000ms
    rtt min/avg/max/mdev = 0.370/0.444/0.500/0.062 ms

    成功通信!

    到此這篇關于docker容器間跨宿主機通信-基于overlay的實現方法的文章就介紹到這了,更多相關docker容器間跨宿主機通信內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

    您可能感興趣的文章:Docker跨主機容器通信overlay實現過程詳解詳解Docker容器跨主機通信的方法詳解docker容器間通信的一種方法Docker overlay 網絡搭建的方法

  3. 本文相關:
  4. 使用docker部署mysql 5.7&8.0主從集群的方法步驟
  5. docker的基本命令使用筆記
  6. win10環境下安裝docker的實現
  7. docker如何快速搭建幾個常用的第三方服務詳解
  8. docker 部署單機版 pulsar 和集群架構 redis(開發神器)的方法
  9. docker 啟動redis 并設置密碼的操作
  10. docker的核心及安裝的具體使用
  11. linux上安裝docker(非常簡單的安裝方法)
  12. 樹莓派安裝docker的方法步驟
  13. docker搭建私有倉庫之harbor的步驟
  14. Docker容器跨主機通信方案選哪一種
  15. 如何使不同主機上的docker容器互相通信
  16. docker 不同宿主機之間怎么通信
  17. 如何解決Docker容器與外部主機通信的問題
  18. docker從容器中怎么訪問宿主機
  19. 如何在 Docker 容器之間設置網絡
  20. Docker容器跨主機通信方案選哪一種
  21. 如何使用數據卷在宿主機和docker容器之間共享
  22. Docker容器跨主機通信方案選哪一種
  23. 如何使用數據卷在宿主機和docker容器之間共享文件
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云計算技術云其它首頁服務器云和虛擬化docker跨主機容器通信overlay實現過程詳解詳解docker容器跨主機通信的方法詳解docker容器間通信的一種方法docker overlay 網絡搭建的方法使用docker部署mysql 5.7&8.0主從集群的方法步驟docker的基本命令使用筆記win10環境下安裝docker的實現docker如何快速搭建幾個常用的第三方服務詳解docker 部署單機版 pulsar 和集群架構 redis(開發神器)的方法docker 啟動redis 并設置密碼的操作docker的核心及安裝的具體使用linux上安裝docker(非常簡單的安裝方法)樹莓派安裝docker的方法步驟docker搭建私有倉庫之harbor的步驟docker 給運行中的容器設置端口映docker獲取鏡像報錯docker: errodocker.service啟動失敗:unit ndocker 清理命令集錦淺談docker-compose網絡設置之neubuntu14.04+docker的安裝及使用docker容器如何優雅的終止詳解docker容器訪問宿主機網絡的方法詳解如何使用docker部署一個web項詳解docker國內鏡像拉取和鏡像加docker registry搭建私有鏡像倉庫的實現方在windows系統下安裝docker窗口的配置過程docker如何添加自定義網橋3分鐘用docker搭建一個minecraft服務器docker 運行時的用戶與組管理的方法centos docker1.12 遠程rest api訪問的配教你使用如何docker部署淘寶rap2服務docker-compose教程之安裝使用和快速入門在docker中跑hadoop與鏡像制作方法docker鏡像訪問本地elasticsearch端口操作
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载