docker 网络管理

本文详细阐述了Docker网络管理的基础知识,包括容器网络模型CNM、网络驱动的选择与推荐,以及Linux网桥、veth对和iptables在容器通信中的作用。还介绍了默认桥接网络、自定义网络和容器间通信的不同方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker 网络管理

docker 网络基础

docker 容器网络模型

  • 1.7.0版本开始,Docker 将网络功能以插件化的形式剥离出来,成为独立的容器网络项目,被称为 libnetwork,为不同容器定义统一规范的网络层标准
  • libnetwork 网络架构基于一套称为容器网络模型(CNM)的接口
  • CNM 的理念是为应用提供跨不同网络基础架构的可移植性
  • 平衡了应用的可移植性
  • 使用者更关心高层的实现,不用关心底层的具体实现

CNM 架构

在这里插入图片描述

CNM 高层架构

  • 沙箱(虚线部分):也叫沙盒(SandBox),包含了容器的网络栈配置,涉及容器的接口、路由表、DNS管理等,是通过 Linux 网络名称空间、FreeBSD Jail(操作系统层虚拟化技术)、其他类似的机制实现,一个沙箱可以包含多个来自不同网络的端点
  • 端点(Endpoint):也叫接入点,用来将沙箱连接到网络,端点架构将与网络的实际连接从应用中抽象出来,有助于移植,让服务无需关心如何连接网络就可以使用不同类型的网络驱动
  • 网络(Network):CNM 没有定义 OSI 七层模型中的网络层,这里的网络可以使用由 Linux 网桥、虚拟局域网等来实现

CNM 驱动接口

提供了2个可插拔且开放的接口

  • 网络驱动(Network Drivers):提供网络运行的具体实现
    • 本地网络驱动:docker 引擎本身实现(overlay 网络、本地网络)
    • 远程网络驱动:社区或者其他供应商提供的网络驱动
    • 也可以自己创建网络驱动
  • IPAM 驱动:IP 地址管理,内置的 IP地址管理驱动,如果没有明确指定,它会为网络和端点提供默认的子网或IP地址,远程 IPAM 驱动可提供工具整合

docker 本地网络驱动

常用本地网络驱动类型 说明
bridge 桥接网络
host 主机网络
overlay 覆盖网络
none 关闭容器的所有网络连接

bridge:默认网络驱动程序

host:使用主机的网络栈

overlay:本地 Linux 桥接网络和 VxLAN技术的结合

网络的作用域

docker network ls

在这里插入图片描述

远程网络驱动

意思就是第三方网络插件,与 CNM 兼容的

  • contive
  • calico
  • kuryr

网络驱动选择推荐

场景 网络驱动
同一个主机多个容器需要通信 自定义的桥接网络
容器网络不与主机隔离,其他方面需要被隔离 主机网络
不同主机上的容器需要通信 overlay
docker 与专用网络栈集成 第三方网络插件

Linux 网络基础

Linux 网桥

网桥是一种在网段之间转发流量的链路层设备,可以是硬件设备,也可以是运行在主机内核的软件设备,Linux 网桥是 Linux内核中用于物理交换机的虚拟化实现的二层网络设备,Docker 的 bridge 是 Linux 网桥的高层实现

网络名称空间

在内核中一个被隔离的网络栈,拥有自己的网络接口、路由、防火墙规则,网络名称空间可以确保同一个主机上的2个容器不能互相通信,设置与主机本身也不能通信,除非通过 docker 网络进行连接,主机的网络的名称空间也被称为全局的网络名称

Docker 提供了各种网络管理选项,用于在容器之间建立网络连接和通信。以下是一些常见的 Docker 网络管理概念和功能: 1. Docker 网络驱动程序(Network Drivers):Docker 支持多种网络驱动程序,用于创建和管理容器之间的网络。默认情况下,Docker 使用 `bridge` 驱动程序。 2. 网络模式(Network Modes):Docker 提供了几种网络模式,用于定义容器如何与主机和其他容器通信。常见的网络模式包括 `bridge`、`host`、`overlay` 和 `none`。 3. 网络创建(Network Creation):可以使用 Docker 命令或 Docker Compose 文件来创建自定义网络。创建自定义网络可以为容器提供隔离的网络环境,并根据需要配置网络参数。 4. 容器连接(Container Networking):可以使用 Docker 命令或 Docker Compose 文件将容器连接到特定网络。这样可以使容器能够通过网络与其他容器或主机进行通信。 5. 网络别名(Network Aliases):Docker 允许为容器分配多个网络别名,这样容器可以通过多个名称进行访问。这对于容器之间的相互通信和服务发现非常有用。 6. 跨主机网络(Multi-Host Networking):Docker 提供了 `overlay` 和 `macvlan` 网络驱动程序,允许在多个 Docker 主机之间创建跨主机网络。这样可以在分布式环境中轻松地管理容器之间的通信。 以上只是 Docker 网络管理的一些基本概念和功能。具体使用方法和配置选项可以参考 Docker 官方文档或其他相关资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值