虽然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)。
查看内核版本: