Docker Network

本文介绍了Docker网络的核心概念,包括CNM、Libnetwork和Driver,详细阐述了Bridge、Host、Overlay、Macvlan和None等驱动。此外,还探讨了Docker网络的常用命令以及网络特性,如容器互联、端口暴露和映射。

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

Docker Network

Docker网络内容概览:

  1. docker网络的组成 – 沙盒 网络 端点
  2. docker容器之间的网络打通是通过 --linkexpose端口暴露实现
  3. docker容器与宿主机之间的网络互联是根据端口映射实现

1.核心概念

在顶层设计中,Docker网络架构由3个主要部分构成:CNMLibnetworkDriver;

  1. CNM(Container Network Model) – CNM是设计标准,规定了容器网络架构的基础组成要素
  2. Libnetwork – CNM的具体实现,并且被Docker采用,由Go语言编写,实现了CNM中列举的核心组件
  3. Driver – 通过实现特定网络拓扑的方式来拓展该模型的能力

1.1 CNM

CNM是Docker网络架构模型,该方案是开源的并且支持插接式连接;
抽象的定义了3个基本要素:

  • 沙盒(sandbox)是个独立的网络栈,其中包括以太网接口、端口、路由表以及DNS配置;
  • 端点(endpoint)是虚拟网络接口,就像普通网络接口一样,端点主要职责是负责创建连接,以及将沙盒连接到网络;
  • 网络(network)是802.1d网桥(类似大家熟知的交换机)的软件实现,网络就是需要交互的终端的集合;
    在这里插入图片描述

1.2 Libnetwork

Libnetwork是Docker对CNM的实现,实现了网络架构的全部功能,还提供了本地服务发现基础的容器负载均衡

  • 沙盒(Sandbox)
    提供了容器的Endpoint套接字、IP 路由表、防火墙等,实现隔离了容器网络与宿主机网络,形成了完全独立的容器网络环境;
  • 网络(Network)
    Docker内部的虚拟子网,网络内的参与者相互可见并能够进行通讯,Docker的这种虚拟网络也是于宿主机网络存在隔离关系的,其目的主要是形成容器间的安全通讯环境;
  • 端点(Endpoint)
    端点是位于容器或网络隔离墙之上的洞,其主要目的是形成一个可以控制的突破封闭的网络环境的出入口;
    当容器的端点与网络的端点形成配对后,就如同在这两者之间搭建了桥梁,便能够进行数据传输了;
    Docker环境中最小的调度单位就是容器,CNM组件与容器进行关联的——沙盒被放置在容器内部,为容器提供网络连接;

在这里插入图片描述服务发布服务发现是Docker Swarm使用的,在Swarm中进行总结;

项目地址:https://github.com/docker/libnetwork

1.3 Driver

Docker封装了一系列本地驱动,不同的驱动可以通过插拔的方式接入Libnetwork来提供定制化的网络拓扑,实现开箱即用的效果;
Docker生态系统中的合作伙伴通过提供驱动的方式,进一步拓展了Docker的网络功能;
目前有两类,共五种驱动,Bridge和Overlay使用频率较高;

两类网络驱动:

  1. 单机桥接网络(Single-Host Bridge Network):Bridge | Host | None
  2. 多机覆盖网络(Multi-H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值