一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - IT工程師都需要掌握的容器技術之Docker容器網絡

IT工程師都需要掌握的容器技術之Docker容器網絡

2020-10-27 00:35今日頭條IT管理局 編程技術

本篇文章我們將講解跨主機網絡的容器通信實現,涉及到Docker overlay網絡與MacVlan網絡的解決方案,下面我們就一起來學習吧!

本篇文章我們將講解跨主機網絡的容器通信實現,涉及到Docker overlay網絡與MacVlan網絡的解決方案,下面我們就一起來學習吧!

IT工程師都需要掌握的容器技術之Docker容器網絡

01 Docker跨主機網絡通信

跨主機的容器網絡方案主要有如下幾種:

1)docker原生方案macvlan與overlay網絡

2)第三方方案如flannel、calico、contiv等

本章節我們主要介紹容器的原生網絡方案,因為每一個第三方的方案都可以用一篇文章進行講解,如果讀者們對第三方方案感興趣請在文章下面留言,小編會結合讀者們的需求進行講解。

02 容器網絡模型與網絡庫

容器之所以有這么多的網絡解決方案,全依仗著容器的優秀架構設計。docker通過libnetwork網絡庫與CNM網絡模型將眾多的網段方案與docker進行集成。libnetwork是網絡網絡庫其最核心作用是定義了容器網絡模型(CNM),該網絡模型主要由三個組件構成具體如下:

1)Sandbox

Sandbox是容器網絡棧,Sandbox通過linux namespace技術實現容器不同網絡的隔離。Sandbox可以包含來自不同網絡的Endpoint。

2)Endpoint

Endpoint表示容器接入網絡的端點,其作用是將Sandbox接入網絡。Endpoint只能屬于一個網絡同時也只能屬于一個Sandbox。

3)Network

代表一組可以直接相互通信的Endpoint集合,可以基于LinuxBridge或者VLAN實現。

IT工程師都需要掌握的容器技術之Docker容器網絡

如上圖是典型的Docker CNM模型圖,每個容器一個Sandbox,Sandbox通過Endpoint與Netwrok互連,其中Endpoint就是由linux的veth pair實現的,一端連接linux bridge上一端掛載在容器內(如eth0網卡),正由于有了該規范模型,只要網絡插件符合該模型就可以與docker daemon進行協同工作,從而實現容器網絡。

03 Docker overlay網絡

Docker原生就提供了Overlay網絡driver,使用該驅動可以創建基于Vxlan的Overlay網絡。Vxlan網絡可將二層的數據封裝到UDP報文中進行傳輸,從而實現了通過三層網絡透傳二層數據報文,VXLAN協議是目前使用比較廣的一個網絡協議,由于本篇文章的重點不在該協議如果大家感興趣可以文章后面留言,若有需求我們會在后面單獨出一篇文章來寫Vxlan。

Docker Overlay網絡需要一個key-value的數據庫用于保存網絡狀態信息包括network、Endpoint、IP等。consul、etcd及zookeeper都是docker支持的key-value存儲的軟件。

我們先來看看我們overlay的實驗環境拓撲,本次實驗我們使用consul作為key-value存儲軟件。

IT工程師都需要掌握的容器技術之Docker容器網絡

現在我們來看看怎么搭建這個實驗吧

1)首先我們將兩臺主機的docker.service文件的ExecStart=命令后增加指向consul的配置參數,具體操作如下(本次實驗是兩臺centos7.5系統的主機)

IT工程師都需要掌握的容器技術之Docker容器網絡

增加好配置參數后,我們重啟docker服務具體命令如下

1. # 重啟docker服務   

2.  systemctl daemon-reload && systemctl restart docker   

2)接著我們安裝consul軟件,我們將其部署在172.17.0.3這臺主機上,以容器方式進行部署,容器的網絡使用host,這樣可以將該軟件所有啟動的網絡接口都在主機上進行暴露,具體操作命令如下

1. # 啟動consul容器   

2.  docker run -d --network host -h consul --name=consul \   

3.  --restart=always -e CONSUL_BIND_INTERFACE=eth0 consul:1.5.2   

consul啟動完我們查看它所啟動的接口

IT工程師都需要掌握的容器技術之Docker容器網絡

我們在瀏覽器輸入其地址端口號8500即可登錄consul的頁面具體如下

IT工程師都需要掌握的容器技術之Docker容器網絡

其實這時我們點擊key/value菜單就可以查看我們注冊到consul的兩臺主機了

IT工程師都需要掌握的容器技術之Docker容器網絡

3)現在我們在host1的主機上創建overlay網絡具體操作如下

1. # 創建容器overlay網絡ov_net1   

2.   docker network create -d overlay ov_net1   

IT工程師都需要掌握的容器技術之Docker容器網絡

其實當你在host1主機上創建好ov_net1的網絡consul會自動將該網絡信息同步至host2主機上,我們再host2主機進行驗證一下

IT工程師都需要掌握的容器技術之Docker容器網絡

4)我們在主機host1上創建容器test1,同時網絡設置為ov_net1,具體操作如下

1. # 創建容器test1,并將網絡指定為ov_net1   

2.   docker run -itd --name test1 --hostname test1 --network ov_net1 busybox   

IT工程師都需要掌握的容器技術之Docker容器網絡

其實在我們創建容器test1后,docker會自動創建一個docker_gwbridge的bridge網絡,該網絡用于我們上圖所說的eth1網卡,從而能夠讓容器能夠訪問外部網絡

IT工程師都需要掌握的容器技術之Docker容器網絡

我們再看一下test1容器的路由信息,可以發現其默認路由直接指向了eth1接口,同時ping外網也確實能夠ping通

IT工程師都需要掌握的容器技術之Docker容器網絡
IT工程師都需要掌握的容器技術之Docker容器網絡

5)最后我們在host2主機上創建test2容器,也指定其網絡為ov_net1,然后驗證test1與test2是否能夠互訪

IT工程師都需要掌握的容器技術之Docker容器網絡

如上圖我們在host2主機上成功創建了test2容器,同時其也自動配置了兩個網卡接口一個用于連接overlay網絡一個用于連接外部網絡。現在我們測試一下test2容器是否能夠ping通test1容器,具體操作如下

IT工程師都需要掌握的容器技術之Docker容器網絡

測試發現test2容器確實可以ping通test1容器,同時還實現了DNS功能,主動把test1容器的名稱映射其對應的IP 10.0.0.2。

下面我們來看看overlay網絡能夠連通的具體邏輯,docker會為每個overlay網絡創建一個獨立的namespace,在namespace中會創建一個br0的網橋,其上有兩組endpoint,一組endpoint的一端連br0一端連容器的eth0口,另外一組endponit的一端連br0另外一段連vxlan接口,該接口用于主機間建立vxlan tunnel,不同主機上的容器就是通過該tunnel進行通信的,具體架構圖如下:

IT工程師都需要掌握的容器技術之Docker容器網絡

04 Docker MacVlan網絡

Macvlan其實是linux系統自帶技術允許你在物理網卡上創建子接口,創建的這些子接口每個都有自己的唯一MAC地址,同時你也可以在這些子接口上配置IP,然后可以將應用程序、虛機及容器綁定到指定的子接口,從而實現自己的MAC與IP直接連接到物理網絡,Macvlan的最大優點是性能比較好,缺點是許多nic對mac地址數量有限制。Macvlan具體架構具體如下圖:

IT工程師都需要掌握的容器技術之Docker容器網絡

由于Macvlan在生產環境中部署較少,我們本篇文章就不做實驗進行演示了,我們在這展示一下其創建的具體命令,感興趣的可以按照下面命令自己來搭環境測試。

1. # 創建macvlan網絡mv_net1,其中parent=eth0是指定macvlan網絡使用的接口

2. docker network create -d macvlan -o parent=eth0 mv_net1

3. # 創建容器test3指定其網絡為mv_net1的macvlan網絡

4. docker run -d --name test3 --network mv_net1 busybox

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 沉香如屑西瓜视频免费观看完整版 | 视频一区在线免费观看 | 国产综合色在线视频区色吧图片 | 全色黄大色黄大片爽一次 | 国产欧美一区二区精品性色 | 我们日本在线观看免费动漫下载 | 成年人免费观看视频网站 | 国产麻豆91网在线看 | 青青草高清视频 | 国精品午夜dy8888狼人 | 啊好爽视频 | h杯奶水太多h | bedfriend泰剧全集免费观看 | 婷婷色天使在线视频观看 | 91最新国产 | 色吊丝每日永久访问网站 | 亚洲乱亚洲乱妇41p国产成人 | 国色天香社区视频免费观看3 | 欧美伊香蕉久久综合类网站 | 国产chinese男男gaygay | 91进入蜜桃臀在线播放 | 欧美黑人换爱交换乱理伦片 | 亚洲zooz人禽交xxxx | 婚前试爱全集免费观看 | 五月天精品视频在线观看 | 国产精品视频视频久久 | 被老头肉至怀孕小说 | 国产精品福利短视在线播放频 | 99久热只有精品视频免费看 | 日本老妇乱子伦中文视频 | 十大免费批日的软件 | 亚洲国产第一区二区香蕉日日 | 奇米777四色精品综合影院 | 日韩精品免费一级视频 | 午夜影院小视频 | 四虎国产免费 | 欧美不卡一区二区三区 | 美女脱了内裤张开腿亲吻男生 | 我不卡影院手机在线观看 | 无遮挡h肉动漫在线观看电车 | 乌克兰13一14娇小 |