偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)

開(kāi)發(fā) 前端
本篇文章我們將講解跨主機(jī)網(wǎng)絡(luò)的容器通信實(shí)現(xiàn),涉及到Docker overlay網(wǎng)絡(luò)與MacVlan網(wǎng)絡(luò)的解決方案,下面我們就一起來(lái)學(xué)習(xí)吧!

 本篇文章我們將講解跨主機(jī)網(wǎng)絡(luò)的容器通信實(shí)現(xiàn),涉及到Docker overlay網(wǎng)絡(luò)與MacVlan網(wǎng)絡(luò)的解決方案,下面我們就一起來(lái)學(xué)習(xí)吧!

[[348530]]

01 Docker跨主機(jī)網(wǎng)絡(luò)通信

跨主機(jī)的容器網(wǎng)絡(luò)方案主要有如下幾種:

1)docker原生方案macvlan與overlay網(wǎng)絡(luò)

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

本章節(jié)我們主要介紹容器的原生網(wǎng)絡(luò)方案,因?yàn)槊恳粋€(gè)第三方的方案都可以用一篇文章進(jìn)行講解,如果讀者們對(duì)第三方方案感興趣請(qǐng)?jiān)谖恼孪旅媪粞?,小編?huì)結(jié)合讀者們的需求進(jìn)行講解。

02 容器網(wǎng)絡(luò)模型與網(wǎng)絡(luò)庫(kù)

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

1)Sandbox

Sandbox是容器網(wǎng)絡(luò)棧,Sandbox通過(guò)linux namespace技術(shù)實(shí)現(xiàn)容器不同網(wǎng)絡(luò)的隔離。Sandbox可以包含來(lái)自不同網(wǎng)絡(luò)的Endpoint。

2)Endpoint

Endpoint表示容器接入網(wǎng)絡(luò)的端點(diǎn),其作用是將Sandbox接入網(wǎng)絡(luò)。Endpoint只能屬于一個(gè)網(wǎng)絡(luò)同時(shí)也只能屬于一個(gè)Sandbox。

3)Network

代表一組可以直接相互通信的Endpoint集合,可以基于LinuxBridge或者VLAN實(shí)現(xiàn)。

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

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

03 Docker overlay網(wǎng)絡(luò)

Docker原生就提供了Overlay網(wǎng)絡(luò)driver,使用該驅(qū)動(dòng)可以創(chuàng)建基于Vxlan的Overlay網(wǎng)絡(luò)。Vxlan網(wǎng)絡(luò)可將二層的數(shù)據(jù)封裝到UDP報(bào)文中進(jìn)行傳輸,從而實(shí)現(xiàn)了通過(guò)三層網(wǎng)絡(luò)透?jìng)鞫訑?shù)據(jù)報(bào)文,VXLAN協(xié)議是目前使用比較廣的一個(gè)網(wǎng)絡(luò)協(xié)議,由于本篇文章的重點(diǎn)不在該協(xié)議如果大家感興趣可以文章后面留言,若有需求我們會(huì)在后面單獨(dú)出一篇文章來(lái)寫(xiě)Vxlan。

Docker Overlay網(wǎng)絡(luò)需要一個(gè)key-value的數(shù)據(jù)庫(kù)用于保存網(wǎng)絡(luò)狀態(tài)信息包括network、Endpoint、IP等。consul、etcd及zookeeper都是docker支持的key-value存儲(chǔ)的軟件。

我們先來(lái)看看我們overlay的實(shí)驗(yàn)環(huán)境拓?fù)?,本次?shí)驗(yàn)我們使用consul作為key-value存儲(chǔ)軟件。

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

現(xiàn)在我們來(lái)看看怎么搭建這個(gè)實(shí)驗(yàn)吧

1)首先我們將兩臺(tái)主機(jī)的docker.service文件的ExecStart=命令后增加指向consul的配置參數(shù),具體操作如下(本次實(shí)驗(yàn)是兩臺(tái)centos7.5系統(tǒng)的主機(jī))

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

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

 

  1. 1. # 重啟docker服務(wù)   
  2. 2.  systemctl daemon-reload && systemctl restart docker   

 

2)接著我們安裝consul軟件,我們將其部署在172.17.0.3這臺(tái)主機(jī)上,以容器方式進(jìn)行部署,容器的網(wǎng)絡(luò)使用host,這樣可以將該軟件所有啟動(dòng)的網(wǎng)絡(luò)接口都在主機(jī)上進(jìn)行暴露,具體操作命令如下

 

  1. 1. # 啟動(dòng)consul容器   
  2. 2.  docker run -d --network host -h consul --name=consul \   
  3. 3.  --restart=always -e CONSUL_BIND_INTERFACE=eth0 consul:1.5.2   

 

consul啟動(dòng)完我們查看它所啟動(dòng)的接口

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

我們?cè)跒g覽器輸入其地址端口號(hào)8500即可登錄consul的頁(yè)面具體如下

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

其實(shí)這時(shí)我們點(diǎn)擊key/value菜單就可以查看我們注冊(cè)到consul的兩臺(tái)主機(jī)了

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

3)現(xiàn)在我們?cè)趆ost1的主機(jī)上創(chuàng)建overlay網(wǎng)絡(luò)具體操作如下

 

  1. 1. # 創(chuàng)建容器overlay網(wǎng)絡(luò)ov_net1   
  2. 2.   docker network create -d overlay ov_net1   

 

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

其實(shí)當(dāng)你在host1主機(jī)上創(chuàng)建好ov_net1的網(wǎng)絡(luò)consul會(huì)自動(dòng)將該網(wǎng)絡(luò)信息同步至host2主機(jī)上,我們?cè)賖ost2主機(jī)進(jìn)行驗(yàn)證一下

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

4)我們?cè)谥鳈C(jī)host1上創(chuàng)建容器test1,同時(shí)網(wǎng)絡(luò)設(shè)置為ov_net1,具體操作如下

 

  1. 1. # 創(chuàng)建容器test1,并將網(wǎng)絡(luò)指定為ov_net1   
  2. 2.   docker run -itd --name test1 --hostname test1 --network ov_net1 busybox   

 

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

其實(shí)在我們創(chuàng)建容器test1后,docker會(huì)自動(dòng)創(chuàng)建一個(gè)docker_gwbridge的bridge網(wǎng)絡(luò),該網(wǎng)絡(luò)用于我們上圖所說(shuō)的eth1網(wǎng)卡,從而能夠讓容器能夠訪問(wèn)外部網(wǎng)絡(luò)

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

我們?cè)倏匆幌聇est1容器的路由信息,可以發(fā)現(xiàn)其默認(rèn)路由直接指向了eth1接口,同時(shí)ping外網(wǎng)也確實(shí)能夠ping通

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

5)最后我們?cè)趆ost2主機(jī)上創(chuàng)建test2容器,也指定其網(wǎng)絡(luò)為ov_net1,然后驗(yàn)證test1與test2是否能夠互訪

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

如上圖我們?cè)趆ost2主機(jī)上成功創(chuàng)建了test2容器,同時(shí)其也自動(dòng)配置了兩個(gè)網(wǎng)卡接口一個(gè)用于連接overlay網(wǎng)絡(luò)一個(gè)用于連接外部網(wǎng)絡(luò)?,F(xiàn)在我們測(cè)試一下test2容器是否能夠ping通test1容器,具體操作如下

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

測(cè)試發(fā)現(xiàn)test2容器確實(shí)可以ping通test1容器,同時(shí)還實(shí)現(xiàn)了DNS功能,主動(dòng)把test1容器的名稱映射其對(duì)應(yīng)的IP 10.0.0.2。

下面我們來(lái)看看overlay網(wǎng)絡(luò)能夠連通的具體邏輯,docker會(huì)為每個(gè)overlay網(wǎng)絡(luò)創(chuàng)建一個(gè)獨(dú)立的namespace,在namespace中會(huì)創(chuàng)建一個(gè)br0的網(wǎng)橋,其上有兩組endpoint,一組endpoint的一端連br0一端連容器的eth0口,另外一組endponit的一端連br0另外一段連vxlan接口,該接口用于主機(jī)間建立vxlan tunnel,不同主機(jī)上的容器就是通過(guò)該tunnel進(jìn)行通信的,具體架構(gòu)圖如下:

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

04 Docker MacVlan網(wǎng)絡(luò)

Macvlan其實(shí)是linux系統(tǒng)自帶技術(shù)允許你在物理網(wǎng)卡上創(chuàng)建子接口,創(chuàng)建的這些子接口每個(gè)都有自己的唯一MAC地址,同時(shí)你也可以在這些子接口上配置IP,然后可以將應(yīng)用程序、虛機(jī)及容器綁定到指定的子接口,從而實(shí)現(xiàn)自己的MAC與IP直接連接到物理網(wǎng)絡(luò),Macvlan的最大優(yōu)點(diǎn)是性能比較好,缺點(diǎn)是許多nic對(duì)mac地址數(shù)量有限制。Macvlan具體架構(gòu)具體如下圖:

 

IT工程師都需要掌握的容器技術(shù)之Docker容器網(wǎng)絡(luò)下

 

由于Macvlan在生產(chǎn)環(huán)境中部署較少,我們本篇文章就不做實(shí)驗(yàn)進(jìn)行演示了,我們?cè)谶@展示一下其創(chuàng)建的具體命令,感興趣的可以按照下面命令自己來(lái)搭環(huán)境測(cè)試。

1. # 創(chuàng)建macvlan網(wǎng)絡(luò)mv_net1,其中parent=eth0是指定macvlan網(wǎng)絡(luò)使用的接口

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

3. # 創(chuàng)建容器test3指定其網(wǎng)絡(luò)為mv_net1的macvlan網(wǎng)絡(luò)

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

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2020-10-19 09:32:49

容器Docker管理

2020-11-25 09:27:49

Docker容器技術(shù)

2020-11-03 16:42:46

容器Dockerfile技術(shù)

2020-10-27 10:52:37

Docker容器存儲(chǔ)

2019-12-12 10:58:37

Docker容器引擎

2010-08-10 13:22:41

2020-03-17 15:15:49

Python工程師面試題

2024-03-22 09:54:04

Docker網(wǎng)絡(luò)驅(qū)動(dòng)容器網(wǎng)絡(luò)

2013-08-15 09:47:27

企業(yè)網(wǎng)絡(luò)簡(jiǎn)化網(wǎng)絡(luò)工程師

2020-07-22 14:50:35

Python數(shù)據(jù)分析庫(kù)

2016-01-11 09:48:07

2022-08-12 09:21:43

前端JavaScript代碼

2020-08-05 08:25:58

大數(shù)據(jù)Java技術(shù)

2012-02-13 17:13:00

2023-09-26 00:40:35

Docker容器操作命令

2022-03-10 08:24:17

Docker容器SaaS

2014-11-20 10:55:47

Docker容器技術(shù)虛擬化

2023-12-14 15:51:15

2021-03-31 22:25:46

運(yùn)維工程師技能

2018-08-22 10:25:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)