您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Docker中Weave如何實(shí)現(xiàn)跨主機(jī)容器互聯(lián),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
Docker的原生網(wǎng)絡(luò)支持非常有限,且沒(méi)有跨主機(jī)的集群網(wǎng)絡(luò)方案。目前實(shí)現(xiàn)Docker網(wǎng)絡(luò)的開源方案有Weave、Kubernetes、Flannel、Pipework以及SocketPlane等,其中Weave被評(píng)價(jià)為目前最靠譜的,那么這里就對(duì)Weave的基本原理及使用方法做個(gè)總結(jié)。
簡(jiǎn)介
Weave是由Zett.io公司開發(fā)的,它能夠創(chuàng)建一個(gè)虛擬網(wǎng)絡(luò),用于連接部署在多臺(tái)主機(jī)上的Docker容器,這樣容器就像被接入了同一個(gè)網(wǎng)絡(luò)交換機(jī),那些使用網(wǎng)絡(luò)的應(yīng)用程序不必去配置端口映射和鏈接等信息。外部設(shè)備能夠訪問(wèn)Weave網(wǎng)絡(luò)上的應(yīng)用程序容器所提供的服務(wù),同時(shí)已有的內(nèi)部系統(tǒng)也能夠暴露到應(yīng)用程序容器上。Weave能夠穿透防火墻并運(yùn)行在部分連接的網(wǎng)絡(luò)上,另外,Weave的通信支持加密,所以用戶可以從一個(gè)不受信任的網(wǎng)絡(luò)連接到主機(jī)。
weave其他特性
應(yīng)用隔離:不同子網(wǎng)容器之間默認(rèn)隔離的,即便它們位于同一臺(tái)物理機(jī)上也相互不通;不同物理機(jī)之間的容器默認(rèn)也是隔離的
物理機(jī)之間容器互通:weave connect $OTHER_HOST
動(dòng)態(tài)添加網(wǎng)絡(luò):對(duì)于不是通過(guò)weave啟動(dòng)的容器,可以通過(guò)weave attach 10.0.1.1/24 $id來(lái)添加網(wǎng)絡(luò)(detach刪除網(wǎng)絡(luò))
安全性:可以通過(guò)weave launch -password wEaVe設(shè)置一個(gè)密碼用于weave peers之間加密通信
與宿主機(jī)網(wǎng)絡(luò)通信:weave expose 10.0.1.102/24,這個(gè)IP會(huì)配在weave網(wǎng)橋上
查看weave路由狀態(tài):weave ps
通過(guò)NAT實(shí)現(xiàn)外網(wǎng)訪問(wèn)docker容器
安裝與啟動(dòng)
直接從github下載二進(jìn)制文件安裝。
# sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave # sudo chmod a+x /usr/local/bin/weave
啟動(dòng)weave路由器,這個(gè)路由器其實(shí)也是以容器的形式運(yùn)行的。
# weave launch Unable to find image 'zettio/weave' locally ......
此時(shí)會(huì)發(fā)現(xiàn)有兩個(gè)網(wǎng)橋,一個(gè)是Docker默認(rèn)生成的,另一個(gè)是Weave生成的。
接下來(lái)就可以運(yùn)行應(yīng)用容器,使用weave提供的網(wǎng)絡(luò)功能了。
簡(jiǎn)單使用
準(zhǔn)備
1. host1: 10.0.2.6
2. host2: 10.0.2.8
3. host1上的應(yīng)用容器1: 192.168.0.2/24 host1上的應(yīng)用容器2: 192.168.1.2/24
4. host2上的應(yīng)用容器1: 192.168.0.3/24
兩臺(tái)機(jī)上均安裝Docker及Weave,并均啟動(dòng)好Weave路由容器。
在兩臺(tái)機(jī)上均啟動(dòng)一個(gè)應(yīng)用容器。可以直接使用weave run
命令,也可以先使用docker run
啟動(dòng)好容器,然后使用weave attach
命令給容器綁定IP地址。
# weave run 192.168.0.2/24 -itd ubuntu bash
或者
# docker run -itd ubuntu bash # weave attach 192.168.0.2/24 $ID
此時(shí)發(fā)現(xiàn)兩個(gè)容器之間是不通的,需要使用weave connect
命令在兩臺(tái)weave的路由器之間建立連接。
# weave connect 10.0.2.8
會(huì)發(fā)現(xiàn),此時(shí)位于兩臺(tái)不同主機(jī)上的容器之間可以相互ping通了。但是處于不同子網(wǎng)的兩個(gè)容器是不能互聯(lián)的,這樣我們就可以使用不同子網(wǎng)進(jìn)行容器間的網(wǎng)絡(luò)隔離了。
我們會(huì)發(fā)現(xiàn),如果不使用Docker的原生網(wǎng)絡(luò),在容器內(nèi)部是不能訪問(wèn)宿主機(jī)以及外部網(wǎng)絡(luò)的。此時(shí)我們可以使用weave expose 192.168.0.1/24
來(lái)給weave網(wǎng)橋添加IP,以實(shí)現(xiàn)容器與宿主機(jī)網(wǎng)絡(luò)連通。但是,此時(shí)在容器內(nèi)部依然不能訪問(wèn)外部網(wǎng)絡(luò)。
我們可以同時(shí)使用Docker的原生網(wǎng)絡(luò)和weave網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)容器互聯(lián)及容器訪問(wèn)外網(wǎng)和端口映射。使用外部網(wǎng)絡(luò)及端口映射的時(shí)候就使用docker0網(wǎng)橋,需要容器互聯(lián)的時(shí)候就使用weave網(wǎng)橋。每個(gè)容器分配兩個(gè)網(wǎng)卡。
其他特性應(yīng)用隔離:不同子網(wǎng)容器之間默認(rèn)隔離的,即便它們位于同一臺(tái)物理機(jī)上也相互不通(使用-icc=false關(guān)閉容器互通);不同物理機(jī)之間的容器默認(rèn)也是隔離的安全性:可以通過(guò)weave launch -password wEaVe設(shè)置一個(gè)密碼用于weave peers之間加密通信查看weave路由狀態(tài):weave ps問(wèn)題容器重啟問(wèn)題
如果使用weave,則就不能再使用docker自帶的auto-restart feature(如docker run –restart=always redis),因?yàn)閣eave是在docker之外為容器配置的網(wǎng)絡(luò),容器重啟的時(shí)候docker本身不會(huì)做這些事情。因而,還需額外的工具來(lái)管理容器的狀態(tài)(比如systemd, upstart等),這些工具要調(diào)用weave命令(weave run/start/attach)來(lái)啟動(dòng)容器。
關(guān)于“Docker中Weave如何實(shí)現(xiàn)跨主機(jī)容器互聯(lián)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。