libnetwork 提供一个原生 go 实现的容器连接,是容器的网络。libnetwork 的目标是定义一个健壮的容器网络模型(container network model),提供一个一致的编程接口和应用程序的网络抽象。
libnetwork一开始的代码只是 libcontainer 和 docker engine 中网络部分代码的合并,docker 官方的愿景是希望 libnetwork 能像 libcontainer 一样,成为一个多平台的容器网络基础包。
受之前的一个 github issue 启 发,libnetwork 引入了容器网络模型(cnm)的概念,cnm 定义了三个新的术语,分别是网络沙箱、endpoint、network。网络沙箱 指的是在每一个容器中,将会有一个隔离的用于网络配置的环境。endpoint 是一个网络接口,可用于某一网络上的交流。network 是一个唯一的且可识别的 endpoint组。
接下来,docker 公司将会把 libnetwork 集成到 docker engine,并在 docker cli 中使用新的网络命令。具体的项目路线图读者可以参考 github。
注意:libnetwork 项目正在大力开发中,还不适合日常使用!
使用示例: