雖然docker發(fā)展得很快,能實(shí)現(xiàn)容器互聯(lián)的方式已經(jīng)有很多,本文則介紹原生實(shí)現(xiàn):Docker1.9版本的docker network功能。
由Zett.io開(kāi)發(fā)的一個(gè)基于overlay的工具,可以創(chuàng)建出虛擬網(wǎng)絡(luò),用于連接部署在多臺(tái)主機(jī)上的容器。在保證外部設(shè)備能訪問(wèn)Weave網(wǎng)絡(luò)上的應(yīng)用程序所提供的服務(wù)的同時(shí)也能令已有的內(nèi)部系統(tǒng)暴露在應(yīng)用程序容器上。
優(yōu)點(diǎn):支持通訊加密;能穿透防火墻等
缺點(diǎn):部署之后需要額外的維護(hù)
2.Pipework由一位Docker工程師實(shí)現(xiàn)的一個(gè)很簡(jiǎn)單但功能強(qiáng)大的shell腳本,使用了cgroups和namespace。
優(yōu)點(diǎn):靈活,可以采用各種方式實(shí)現(xiàn)容器的互聯(lián)(筆者之前就是利用OVS和Pipework實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的跨主機(jī)互聯(lián)方案,當(dāng)時(shí)的Docker版本為1.4.1)
缺點(diǎn):實(shí)現(xiàn)容器互聯(lián)后還需要借助其他程序才能實(shí)現(xiàn)自動(dòng)化管理,增加額外的維護(hù)成本。
3.KubernetesGoogle推出的針對(duì)容器管理和編排的開(kāi)源項(xiàng)目,讓用戶(hù)能在跨主機(jī)集群的情況下輕松地管理、監(jiān)測(cè)容器化應(yīng)用部署,其某些概念與SDN非常相似。
優(yōu)點(diǎn):完整方案,集成得比較完善的功能
缺點(diǎn):它并非一個(gè)簡(jiǎn)單的工具,而是一個(gè)系統(tǒng),對(duì)于純粹想要一個(gè)能實(shí)現(xiàn)互聯(lián)的工具的人來(lái)說(shuō)是:有太多不需要的東西
4.FlannelCoreOS團(tuán)隊(duì)實(shí)現(xiàn)的針對(duì)Kubernentes的一個(gè)overlay網(wǎng)絡(luò)工具,讓每個(gè)使用kubernetes得CoreOS主機(jī)擁有一個(gè)完整的子網(wǎng)。
優(yōu)點(diǎn):可與CoreOS緊密結(jié)合,對(duì)于那些打算使用CoreOS的人來(lái)說(shuō)是個(gè)不錯(cuò)的選擇
缺點(diǎn):這個(gè)方案基本上都要與Kubernetes搭配使用。另外在某些情況下,這個(gè)方案會(huì)導(dǎo)致IP地址的浪費(fèi)
Docker1.9的安裝事項(xiàng)因?yàn)镈ocker正在快速迭代,一些舊版本的功能不被支持,雖然可以卸載舊的版本再重新安裝1.9。這里筆者在新版本系統(tǒng)上重新安裝Docker1.9。筆者使用的系統(tǒng)是ubuntu server 14.04.3,內(nèi)核版本為3.19(內(nèi)核版本低于3.16無(wú)法支持libnetwork)。
查看內(nèi)核版本: