浅析Docker内置网络模式
引言
Docker提供了多种内置的网络模式,用于在容器之间建设网络连接。这篇文章将浅析这些网络模式,包含桥接网络、主机网络、无网络模式和Overlay网络等。咱们将探讨每种网络模式的优缺点、实用场景。
桥接网络(Bridge Network)
概念
桥接网络是Docker的默认网络模式。在桥接网络中,Docker会为每个容器创立一个虚构网络接口,并为容器调配一个IP地址。容器能够通过桥接网络与主机和其余容器进行通信。
长处
- 隔离性:每个容器都有独立的网络命名空间,相互之间隔离,不会相互烦扰。
- 简略易用:桥接网络是默认的网络模式,无需额定配置,容器能够间接进行通信。
跨主机通信:能够通过端口映射实现容器与主机之间的通信,也能够应用Overlay网络实现跨主机通信。
毛病
- 性能损失:桥接网络须要进行网络地址转换(NAT),可能会引入肯定的性能损失。
端口抵触:如果多个容器应用雷同的端口号,可能会导致端口抵触。
利用场景
- 桥接网络实用于单主机上的多个容器之间的通信,例如微服务架构中的多个服务容器之间的通信。
- 尽管在国内各大云厂商在docker容器中应用调配的公网ipv6地址通信,比拟繁琐,然而也属于一种利用场景,其实如果想应用ipv6的话,能够通过应用内置的主机网络模式实现。
如果你的业务场景决定你必须应用桥接模式中的ipv6网络,这个举荐一篇文章可能会解决你的问题 > https://zhuanlan.zhihu.com/p/400379696
如何应用
桥接网络是默认的网络模式,无需额定配置。通过docker run命令创立容器时,能够应用--network bridge参数指定应用桥接网络,当然因为是默认的,也能够抉择不加。
因为桥接网络须要进行网络地址转换(NAT)实现的,所以个别在应用时,都会将服务端口映射进去 -p [hostPort]:[containerPort]最佳实际
- 应用自定义网络:为容器创立自定义的桥接网络,能够更好地治理容器之间的通信和连贯。
应用容器名称进行通信:通过为容器指定名称,不会创立本人的网卡,配置本人的 IP,而是和一个指定的容器共享 IP、端口范畴等。
#1docker network create my-networkdocker run --network=my-network --name=containemy-image1docker run --network=my-network --name=container2 my-image2#从 Docker 1.10 版本开始,docker daemon 实现了一个内嵌的 DNS server,使容器能够间接通过容器名称通信。这样,容器1和容器2能够通过它们的容器名称 "container1" 和 "container2" 进行通信,而不用记住它们的IP地址
#2 如下图docker run --name=container1 my-image1docker run --name=container2 --network container:[container1] my-image2#这样,就能够将container2和container1组成同一个网络,即container2不会创立本人的网卡,配置本人的 IP,而是和一个指定的容器共享 IP、端口范畴等
主机网络(Host Network)
概念
在主机网络模式下,容器与主机共享网络命名空间,间接应用主机的网络接口和IP地址。容器能够通过主机网络与主机和其余容器进行通信。
长处
- 性能劣势:与桥接网络相比,主机网络模式能够提供更高的网络性能,因为容器间接应用主机的网络接口,无需进行额定的网络地址转换。
简化网络配置:容器与主机共享网络命名空间,无需进行端口映射或网络转发配置。
毛病
- 安全性升高:容器与主机共享网络命名空间,容器能够间接拜访主机上的网络资源,可能会减少平安危险。
端口抵触:如果多个容器应用雷同的端口号,可能会导致端口抵触。
利用场景
- 主机网络模式实用于对网络性能要求较高的场景,例如须要间接拜访主机上的网络资源或与主机进行高性能通信的容器。
应用主机调配的公网ipv6地址进行通信,而后你就相当于领有了一个双协定的服务容器了
如何应用
- 在创立容器时,能够应用--network host参数指定应用主机网络模式。
开启docker中的ipv6
vim /etc/docker/daemon.json退出这两行,就会开启ipv6,前提是你的主机曾经调配了ipv6地址哟{"ipv6": true, #这个前缀是你去云厂商或者去路由表查到的 ip -6 route show dev eth0"fixed-cidr-v6": "2402:xxx:xxxx:xxx::/64"}
最佳实际
- 留神端口抵触:因为容器与主机共享网络命名空间,须要确保容器应用的端口号在主机上是惟一的。
思考安全性:主机网络模式可能会升高容器的安全性,须要审慎应用,并确保适当的安全措施。
#容器与主机共享网络命名空间,间接应用主机的网络接口和IP地址docker run --network=host --name=container1 my-image1
无网络模式(None Network)
概念
在无网络模式下,容器没有网络接口,与内部网络齐全隔离。这种模式实用于不须要网络连接的容器,例如批处理工作或与网络无关的利用。
长处
- 安全性加强:无网络模式下的容器与内部网络齐全隔离,能够提供更高的安全性。
资源节俭:无网络模式下的容器不须要网络接口和IP地址,能够节俭网络资源。
毛病
无奈进行网络通信:容器无奈与内部网络或其余容器进行通信。
利用场景
无网络模式实用于不须要网络连接的容器,例如执行离线工作或与网络无关的利用。
如何应用
在创立容器时,能够应用--network none参数指定应用无网络模式。
最佳实际
留神容器需要:确保抉择无网络模式的容器真正不须要进行网络通信,以防止性能受限或无奈满足业务需要。
Overlay网络(Overlay Network)
概念
Overlay网络模式容许在多个Docker主机之间创立一个虚构网络,容器能够通过该网络进行通信。这种模式实用于跨主机的容器集群,能够提供容器之间的跨主机通信和服务发现性能。
长处
- 跨主机通信:Overlay网络模式容许容器在不同的Docker主机之间进行通信,能够构建跨主机的容器集群。
服务发现:Overlay网络模式集成了服务发现性能,容器能够通过服务名称进行通信,而不须要关注底层网络配置。
毛病
网络复杂性:Overlay网络模式引入了额定的网络管理和配置复杂性,包含网络插件、路由配置和网络隧道等。
利用场景
Overlay网络模式实用于构建分布式应用程序、容器编排平台和跨主机容器通信等场景。
如何应用
创立Overlay网络须要应用Docker Swarm或Kubernetes等容器编排平台。在创立网络时,能够指定网络的驱动程序和配置参数。
最佳实际
- 应用容器编排平台:Overlay网络模式通常与容器编排平台(如Docker Compose,Docker Swarm或K8S)一起应用,以实现跨主机容器通信和服务发现性能。
- 网络安全性:在应用Overlay网络模式时,须要留神网络安全性,确保网络通信受到适当的爱护和访问控制。
作者:傻傻三多
出处:https://www.sssd.top/archives/1692144004974
版权:本作品采纳「署名-非商业性应用-雷同形式共享 4.0 国内」许可协定进行许可。
本文由博客一文多发平台 OpenWrite 公布!