Docker之网络
一 Docker 网络管理简介
1.1 为什么要Docker网络管理
容器的网络默认与宿主机、与其他容器都是相互隔离。
•容器中可以运行一些网络应用(如nginx、web应用、数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么就需要配置网络来实现。
•有可能有的需求下,容器不想让它的网络与宿主机、与其他容器隔离。
•有可能有的需求下,容器根本不需要网络。
•有可能有的需求下,容器需要更高的定制化网络(如定制特殊的集群网络、定制容器间的局域网)。
•有可能有的需求下, 容器数量特别多,体量很大的一系列容器的网络管理如何
•……
因此容器的网络管理是非常重要的
1.2 Docker中有哪些网络驱动模式
Docker有五种网络驱动模式
•bridge network 模式(网桥):默认的网络模式。类似虚拟机的nat模式
•host network 模式(主机):容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络
•None network 模式:容器禁用所有网络。
•Overlay network 模式(覆盖网络): 利用VXLAN实现的bridge模式
•Macvlan network 模式:容器具备Mac地址,使其显示为网络上的物理设备
二 Docker 网络管理命令
2.1 查看网络 – docker network ls
|
|
2.2 创建网络 – docker network create
|
|
2.3 网络删除 – docker network rm
|
|
2.4 查看网络详细信息 – docker network inspect
|
|
2.5 使用网络 – docker run –network
|
|
2.6 网络连接与断开 – docker network connect/disconnect
|
|
三 Docker 网络模式简介
3.1 bridge 网络模式(一)
特点:
•宿主机上需要单独的bridge网卡,如默认docker默认创建的docker0。
•容器之间、容器与主机之间的网络通信,是借助为每一个容器生成的一对veth pair虚拟网络设备对,进行通信的。一个在容器上,另一个在宿主机上。
•每创建一个基于bridge网络的容器,都会自动在宿主机上创建一个veth**虚拟网络设备。
•外部无法直接访问容器。需要建立端口映射才能访问。
•容器借由veth虚拟设备通过如docker0这种bridge网络设备进行通信。
•每一容器具有单独的IP

3.2 bridge 网络模式(二) – 端口映射
|
|

3.3 host 网络模式
特点:
•容器完全共享宿主机的网络。网络没有隔离。宿主机的网络就是容器的网络。
•容器、主机上的应用所使用的端口不能重复。例如:如果宿主机已经占用了8090端口,那么任何一个host模式的容器都不可以使用8090端口了;反之同理。
•外部可以直接访问容器,不需要端口映射。
•容器的IP就是宿主机的IP

3.4 特殊host 网络模式(Container网络模式)
•Container网络模式,其实就是容器共享其他容器的网络。
•相当于该容器,,在网络层面上,将其他容器作为“主机”。它们之间的网络没有隔离。
•这些容器之间的特性同host模式。
使用方法:
Docker run/create –network container:CONTAINER …

3.5 none 网络模式
特点:
•容器上没有网络,也无任何网络设备。
•如果需要使用网络,需要用户自行安装与配置。
应用场景
•该模式适合需要高度定制网络的用户使用。
3.6 overlay 网络模式(一)
•Overlay 网络,也称为覆盖网络。
•Overlay 网络的实现方式和方案有多种。Docker自身集成了一种,基于VXLAN隧道技术实现。
•Overlay 网络主要用于实现跨主机容器之间的通信。
应用场景:需要管理成百上千个跨主机的容器集群的网络时
3.7 overlay 网络模式(二)- 了解TCP/IP协议栈

3.8 overlay 网络模式(三)- 实现原理


3.9 macvlan 网络模式
•macvlan网络模式,最主要的特征就是他们的通信会直接基于mac地址进行转发。
•这时宿主机其实充当一个二层交换机。Docker会维护着一个MAC地址表,当宿主机网络收到一个数据包后,直接根据mac地址找到对应的容器,再把数据交给对应的容器。
•容器之间可以直接通过IP互通,通过宿主机上内建的虚拟网络设备(创建macvlan网络时自动创建),但与主机无法直接利用IP互通。
应用场景:由于每个外来的数据包的目的mac地址就是容器的mac地址,这时每个容器对于外面网络来说就相当于一个真实的物理网络设备。因此当需要让容器来的网络看起来是一个真实的物理机时,使用macvlan模式

四 总结
重点掌握:
•bridge网络、host网络、Container网络模式的原理和使用(应用得较多,且host网络性能最优)。
•docker network命令的使用
了解:
•none网络的效果
•overlay网络、macvlan网络的原理。(使用起来难度较大)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构