在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享關于容器網絡模型CNM和libnetwork

冬至子 ? 來源:月影的成長日記 ? 作者:月影 ? 2023-05-20 14:17 ? 次閱讀

CNM

CNM (Container Network Model) 是 Docker 發布的容器網絡標準。也有不是Docker發布的標準,例如CNI.CNI是由以Kubernetes為代表的公司發布的標準。主要還是因為Kubernetes面對的是多容器而不是單容器,所以標準和docker的不一樣,有專門的博客來介紹為什么Kubernetes不選擇CNM作為容器的網絡標準。雖然最后k8s的CNI成為了容器網絡標準,但是libnetwork的容器網絡模式使得pod中容器共享網絡環境成為可能。

libnetwork

Docker網絡部分代碼被抽離并單獨成為了Docker的網絡庫,即libnetwork。

圖片

(圖片來自網絡,侵刪)

從上圖可以看到libnetwork和docker daemon之間的關系。Docker daemon通過調用libnetwork對外提供的API完成網絡的創建和管理等功能。libnetwork中則使用了CNM來完成網絡功能的提供。同時也可以看到CNM的三個重要元素:

沙箱(sandbox):沙箱代表一個容器網絡棧的信息。可以對容器的接口、路由和DNS設置等進行管理。沙盒的實現可以是Linux network namespace、FreeBSD Jail或者類似的機制。一個沙盒可以有多個端點和多個網絡。

接入點(Endpoint):接入點將沙箱連接到網絡中,代表容器的網絡接口,接入點的實現通常是 Linux 的 veth 設備。一個接入點只可以屬于一個網絡并且只屬于一個沙箱。

網絡(Network):網絡是一組可以直接互相聯通的接入點。網絡的實現可以是Linux bridge、VLAN等。它將多接入點組成一個子網,并且多個接入點之間可以相互通信

了解了CNM,接下來我們來認識libnetwork的四種常見網絡模式:

  1. null 空網絡模式:可以幫助我們構建一個沒有網絡接入的容器環境,以保障數據安全。
  2. bridge 橋接模式:可以打通容器與容器間網絡通信的需求。
  3. host 主機網絡模式:可以讓容器內的進程共享主機網絡,從而監聽或修改主機網絡。
  4. container 網絡模式:可以將兩個容器放在同一個網絡命名空間內,讓兩個業務通過 localhost 即可實現訪問。

(1)null 空網絡模式

空網意味著沒有網絡信息,就是一個單純的沒有連接網絡的一個容器。我們可以使用docker命令來創建一個空網模式的容器來檢查容器內部的網絡信息,首先我們可以先打開正常模式的容器來看一下網絡信息:

/yapi # ifconfig                                                                                             
eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:02                                                      
          inet addr:172.18.0.2  Bcast:172.18.255.255  Mask:255.255.0.0                                       
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1                                                 
          RX packets:597521 errors:0 dropped:0 overruns:0 frame:0                                            
          TX packets:1194752 errors:0 dropped:0 overruns:0 carrier:0                                         
          collisions:0 txqueuelen:0                                                                          
          RX bytes:126660347 (120.7 MiB)  TX bytes:254347460 (242.5 MiB)                                     


lo        Link encap:Local Loopback                                                                          
          inet addr:127.0.0.1  Mask:255.0.0.0                                                                
          UP LOOPBACK RUNNING  MTU:65536  Metric:1                                                           
          RX packets:38 errors:0 dropped:0 overruns:0 frame:0                                                
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0                                              
          collisions:0 txqueuelen:1000                                                                       
          RX bytes:2362 (2.3 KiB)  TX bytes:2362 (2.3 KiB)    
/yapi # route -n                                                                                             
Kernel IP routing table                                                                                      
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface                                
0.0.0.0         172.18.0.1      0.0.0.0         UG    0      0        0 eth0                                 
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

可以看到里面是有網卡信息eth0,ip也正常展示。接下來我們新建空網模式的容器,再來觀察它的網卡信息和路由信息:

[root@VM-12-13-centos ~]# docker run --net=none -it busybox                                                  
/ # ifconfig                                                                                                 
lo        Link encap:Local Loopback                                                                          
          inet addr:127.0.0.1  Mask:255.0.0.0                                                                
          UP LOOPBACK RUNNING  MTU:65536  Metric:1                                                           
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0                                                 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0                                               
          collisions:0 txqueuelen:1000                                                                       
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)                                                             


/ # route -n                                                                                                 
Kernel IP routing table                                                                                      
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface                                
/ #

可以看到,新建的容器沒有eth0的信息,并且沒有ip信息。這種模式如果不進行特定的配置是無法正常使用的,但是優點也非常明顯,它給了用戶最大的自由度來自定義容器的網絡環境。

(2)bridge 橋接模式

bridge橋接模式是Docker網絡模型中的一種常見網絡模式,它可以讓多個容器之間相互通信,也可以與外部網絡進行通信。在bridge模式下,每個容器都會分配一個唯一的IP地址,并且可以通過容器名稱或者IP地址互相訪問。我們先來了解關于Docker的bridge模式的實現原理。

linux veth 和linux bridge

圖片

(圖片來自網絡,侵刪)

docker 的bridge模式就是這樣的,可以看到docker0像一個交換機,把不同的容器連通,是他們可以互相通信。一般我們在使用docker做網絡映射時,通常都加了-p指定端口,用來做容器間的通信或者與容器外部通信。

(3)host 主機網絡模式

host 主機網絡模式讓容器內的進程共享主機的網絡棧,從而使得容器內的應用程序能夠直接與主機和外部網絡進行通信,同時也可以避免了端口映射和NAT等額外的網絡開銷。使用這種模式的時候,libnetwork并不會創建獨立的network namespace。同樣,我們查看host模式下容器內部的網絡信息

[root@VM-12-13-centos ~]# docker run -it --net=host busybox                                                                                                                                                                                                                 
/ # ip a                                                                                                                                                                                                                                                                    
1: lo:  mtu 65536 qdisc noqueue qlen 1000                                                                                                                                                                                                             
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00                                                                                                                                                                                                                   
    inet 127.0.0.1/8 scope host lo                                                                                                                                                                                                                                          
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
    inet6 ::1/128 scope host                                                                                                                                                                                                                                                
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
2: eth0:  mtu 1500 qdisc mq qlen 1000                                                                                                                                                                                                      
    link/ether 52:54:00:4f:76:46 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                      
    inet 10.0.12.13/22 brd 10.0.15.255 scope global eth0                                                                                                                                                                                                                    
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
    inet6 fe80::5054:ff:fe4f:7646/64 scope link                                                                                                                                                                                                                             
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
3: br-85f2d3e30fa7:  mtu 1500 qdisc noqueue                                                                                                                                                                                              
    link/ether 02:42:3e:54:35:a5 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                      
    inet 172.22.0.1/16 brd 172.22.255.255 scope global br-85f2d3e30fa7                                                                                                                                                                                                      
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
4: br-c42d4a549c65:  mtu 1500 qdisc noqueue                                                                                                                                                                                                
    link/ether 02:42:39:a3:4a:26 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                      
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-c42d4a549c65                                                                                                                                                                                                      
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
    inet6 fe80::42:39ff:fea3:4a26/64 scope link                                                                                                                                                                                                                             
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
5: docker0:  mtu 1500 qdisc noqueue                                                                                                                                                                                                        
    link/ether 02:42:fd:43:ed:84 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                      
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0                                                                                                                                                                                                              
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
    inet6 fe80::42:fdff:fe43:ed84/64 scope link                                                                                                                                                                                                                             
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                              
6: br-f057a92711b7:  mtu 1500 qdisc noqueue                                                                                                                                                                                              
    link/ether 02:42:78:b5:0a:b4 brd ff:ff:ff:ff:ff:ff                                                                                                                                                                                                                      
    inet 172.21.0.1/16 brd 172.21.255.255 scope global br-f057a92711b7                                                                                                                                                                                                      
       valid_lft forever preferred_lft forever                                                                                                                                                                                                                                                                                                                                                                                                                                                      
/ #

可以看到容器內的網絡環境與主機完全一致。但是,但是,容器其他方面,如文件系統、進程列表等還是和宿主機隔離的。所以如果是集群規模比較大的情況,還是不是用這種host模式的。

(4)container 網絡模式

container 網絡模式可以將多個容器放在同一個網絡命名空間內。當這些容器需要共享網絡,但其他資源仍然需要隔離時就可以使用 container 網絡模式,例如我們開發了一個 http 服務,但又想使用 nginx 的一些特性,讓 nginx 代理外部的請求然后轉發給自己的業務,這時我們使用 container 網絡模式將自己開發的服務和 nginx 服務部署到同一個網絡命名空間中。

當創建一個新容器時,我們可以使用以下命令將其加入到已存在的網絡命名空間:

docker run -d --name my-nginx1 nginx
docker run -d --name my-nginx2 --network container:my-nginx1 nginx

通過上述命令,我們可以在my-nginx2容器中通過 curl http://localhost來訪問my-nginx1容器的Web服務。在container模式下,所有的容器都共享同一個網絡棧和IP地址,因此它們之間的網絡性能通常比bridge模式更高,但安全性可能會降低。

總結:

  • Docker使用CNM為通信標準來完成網絡實現;
  • CNM三要素:沙箱(Sandbox)、接入點(Endpoint)、網絡(Network);
  • Libnetwork 常見四種網絡模式:null 空網絡模式、bridge 橋接模式、host 主機網絡模式、container 網絡模式;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • freebsd
    +關注

    關注

    0

    文章

    37

    瀏覽量

    10817
  • VLAN技術
    +關注

    關注

    0

    文章

    45

    瀏覽量

    6412
  • LINUX內核
    +關注

    關注

    1

    文章

    316

    瀏覽量

    21747
收藏 人收藏

    評論

    相關推薦

    網絡模型.pdf

    網絡模型.pdf
    發表于 09-15 12:50

    關于BP神經網絡預測模型的確定!!

    請問用matlab編程進行BP神經網絡預測時,訓練結果很多都是合適的,但如何確定最合適的?且如何用最合適的BP模型進行外推預測?
    發表于 02-08 14:23

    網絡中心戰構建模型是什么?

    網絡中心戰理論是人們對歷史上信息和戰爭之間不解之緣深化認識的具體體現。眾所周知,空間和時間是軍事行動中兩個非常重要的要素,而網絡可以很好地聯系這兩個要素,因此隨著網絡技術的發展,網絡
    發表于 10-23 06:04

    容器模型/關鍵參數/類型

    一、電容器模型實際的電容器模型如下:二、電容器的關鍵參數二、ESR和ESL對電容器頻率響應的影
    發表于 12-01 16:42

    介紹一種多層陶瓷電容器的動態模型

    介紹一種多層陶瓷電容器的動態模型
    發表于 06-08 06:44

    關于網絡通信的特性描述

    這些年,關于網絡通信’的特性描述,聽過最多的擬合場景就是:一個人在講話,哪些人(們)可以聽得到?最近有機會進一步的琢磨這些事,這里做個總結。單播、多播、廣播:在tcpi/ip四層模型中,
    發表于 08-05 07:24

    電機中的熱阻網絡模型該怎么建立

    前言這篇詳細的介紹了電機中的熱阻網絡模型該怎么建立,雖然是以某一個特定的永磁同步電機為例子,但是把它的思路給領會到了,在刻畫其他模型的時候就是舉一反三的事。再次感謝《基于熱阻網絡法的電
    發表于 08-30 07:42

    卷積神經網絡模型發展及應用

    卷積神經網絡模型發展及應用轉載****地址:http://fcst.ceaj.org/CN/abstract/abstract2521.shtml深度學習是機器學習和人工智能研究的最新趨勢,作為一個
    發表于 08-02 10:39

    關于容器的使用壽命

    關于容器的使用壽命
    發表于 11-17 15:22 ?19次下載

    探究Overlay網絡模型和Underlay網絡模型

    本文分別介紹Overlay網絡模型和Underlay網絡模型。 (一) Overlay網絡模型
    的頭像 發表于 06-04 16:00 ?2474次閱讀
    探究Overlay<b class='flag-5'>網絡</b><b class='flag-5'>模型</b>和Underlay<b class='flag-5'>網絡</b><b class='flag-5'>模型</b>。

    剖析容器網絡的基本概念及發展

    容器并不需要鏡像,以及另一個方面,構建鏡像需要運行一些容器。 現在是時候解決容器網絡問題了。或者更準確地說,單主機容器
    的頭像 發表于 08-27 10:17 ?2467次閱讀
    剖析<b class='flag-5'>容器</b><b class='flag-5'>網絡</b>的基本概念及發展

    CNM Ingenuity IoT植物澆水系統

    電子發燒友網站提供《CNM Ingenuity IoT植物澆水系統.zip》資料免費下載
    發表于 11-25 09:13 ?0次下載
    <b class='flag-5'>CNM</b> Ingenuity IoT植物澆水系統

    組織容器網絡的原理及方案

    Podman 容器管理器的一個很好的特性是關注于 rootless 容器。但是,你可能注意到,本文使用了很多 sudo 命令。說明,沒有 root 權限無法配置網絡
    發表于 12-31 16:01 ?319次閱讀

    關于容器網絡下使用UDP協議無法通訊問題的分析和處理

    這個問題抽象出來是這樣的:如果有 UDP 服務運行在宿主機上(或者運行在網絡模型為 host 的容器里),并且監聽在 0.0.0.0 地址(也就是所有的 ip 地址),從運行在 docker bridge(網橋為 docker0
    的頭像 發表于 05-19 15:11 ?1067次閱讀
    <b class='flag-5'>關于</b><b class='flag-5'>容器</b><b class='flag-5'>網絡</b>下使用UDP協議無法通訊問題的分析和處理

    SDNLAB技術分享:容器網絡大觀

    1、虛擬機擁有完善的隔離機制,虛擬網卡與硬件網卡在使用上沒有什么區別,而容器則使用network namespace提供網絡在內核中的隔離,因此為了保障容器的安全性,容器
    發表于 06-16 09:49 ?591次閱讀
    SDNLAB技術分享:<b class='flag-5'>容器</b><b class='flag-5'>網絡</b>大觀
    主站蜘蛛池模板: 国产床戏无遮掩视频播放 | 夜夜精品视频 | 色多多18免费观看 | 扒开双腿疯狂进出爽爽爽 | 日本黄色小说视频 | 日本免费一区视频 | 午夜免费在线观看 | 美女黄频 | 婷婷亚洲视频 | 91网址在线播放 | 黄色网网址 | 亚洲人成毛片线播放 | 亚洲国产一区二区三区a毛片 | 丁香5月婷婷 | 国产一级特黄高清在线大片 | 免费人成a大片在线观看动漫 | 全免费a级毛片免费看不卡 全日本爽视频在线 | 亚洲一区二区黄色 | 成人欧美另类人妖 | 色综合欧美 | 国产成人午夜片在线观看 | 人人干人人艹 | 亚洲成在人线影视天堂网 | 一级毛片美国一级j毛片不卡 | 成年女人色费视频免费 | 巨大欧美黑人xxxxbbbb | 人色网 | 国产精品资源 | 久久天天 | 淫www| 在线免费看一级片 | 日日操天天操夜夜操 | 口述他拿舌头进去我下面好爽 | 一区二区三区免费精品视频 | 色综合久久九月婷婷色综合 | 性生活一区| 香蕉视频在线观看国产 | 亚洲嫩草影院在线观看 | 亚洲狠狠狠一区二区三区 | 美女色黄一男一女 | 天天欧美 |