本文出自明月工作室:https://www.freebytes.net/it/linux/docker-network-drivers.html
简介
docker的网络子系统通过网络驱动实现可插拔的效果。docker默认有几种网络驱动,它们提供了核心的网络功能。
bridge
这是默认的网络驱动,如果你在创建网络时不指定网络驱动,那么就使用默认的bridge驱动。如果需要在几个独立容器之间通信,一般使用这种驱动。
host
这种驱动,是让docker容器直接使用主机的网络,并删除容器与主机之间的网络隔离。不过它只被用在docker17.06及以上的版本的集群服务中。
overlay
overlay驱动可将多个docker守护进程连接在一起,并使集群服务之间能够互相通信。也可以使用overlay促进一个集群服务和一个独立容器之间的联系,或促进两个不同docker守护进程上的独立容器的联系。这种驱动策略避免了在容器间进行操作系统级别路由的需要。
macvlan
macvlan驱动允许你指定一个mac地址给一个容器,那么docker守护进程通过mac地址将流量路由到容器。如果你想直接使用物理网络,而不是使用docker主机的网络堆栈(类似网络协议栈OSI),那么选择macvlan是最好的选择。
none
使用这个驱动,会禁止所有网络,通常和自定义网络驱动结合使用。不适合使用在集群服务中。
Network plugins
你可以在Docker上安装和使用第三方网络插件。这些插件可从 Docker Hub 或第三方供应商处获得。
网络驱动选择总结
1、如果需要在同一个宿主机上的不同容器之间进行通信,那么最好选择用户定义的bridge网络。
2、当你不希望容器的网络堆栈与主机的网络堆栈隔离,但其他方面还是与主机隔离,那么最好用host网络。
3、当多个容器运行在不同主机上且需要通信时,或者多个应用使用集群服务一起工作时,最好使用overlay网络。