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