近期Docker官方宣布将废弃OVS(OpenvSwitch)的支持,这对于那些使用Docker和OVS集成的用户来说是个坏消息。因此,我们需要理解为什么Docker会废弃OVS集成。
首先是OVS的性能问题:由于OVS在数据包处理上增加了更多的开销,因此在很多场景下它的性能并不理想。同时,为了支持OVS,Docker需要增加更多的代码逻辑,这会导致容器性能下降。
其次是OVS对于Docker的控制问题:OVS与Docker的高度集成使得Docker无法自主控制OVS相关配置,比如添加和删除VLANs、QoS以及队列。这导致了Docker用户体验的不佳,尤其在大规模容器应用场景下很难管理。
最后是Docker中网络插件的使用:Docker提供了插件机制来扩展其网络功能,比如docker-plugin-bridge等插件。而使用OVS会覆盖Docker自带的插件,这无疑会带来更多的不可预测性和管理困难。
因此,Docker决定放弃对OVS的支持,转而建议用户采用原生的Docker网络模型,或是使用CNI(容器网络接口)等更灵活的网络插件来替代OVS集成。此外,Docker也会继续改善自身的网络插件和网络体系结构,以提供更好的容器网络性能。