美文网首页docker
【3.4】docker基础知识 网络

【3.4】docker基础知识 网络

作者: 王滕辉 | 来源:发表于2022-03-24 09:01 被阅读0次

    在 Docker 早期阶段,网络部分代码都存在于 daemon 当中。daemon 变得臃肿,并且不符合 UNIX 工具模块化设计原则,即既能独立工作,又易于集成到其他项目。

    所以,Docker 将该网络部分从 daemon 中拆分,并重构为一个叫作 Libnetwork 的外部类库。

    现在,Docker 核心网络架构代码都在 Libnetwork 当中。Libnetwork 实现了 CNM 中定义的全部 3 个组件。此外它还实现了本地服务发现(Service Discovery)、基于 Ingress 的容器负载均衡,以及网络控制层和管理层功能。

    Docker 网络架构的设计规范是 CNM。CNM 中规定了 Docker 网络的基础组成要素,完整内容见 GitHub 的 docker/libnetwork 库。

    抽象来讲,CNM 定义了 3 个基本要素:沙盒(Sandbox)、终端(Endpoint)和网络(Network)。

    • 沙盒是一个独立的网络栈。其中包括以太网接口、端口、路由表以及 DNS 配置。
    • 终端就是虚拟网络接口。就像普通网络接口一样,终端主要职责是负责创建连接。在 CNM 中,终端负责将沙盒连接到网络。
    • 网络是 802.1d 网桥(类似大家熟知的交换机)的软件实现。因此,网络就是需要交互的终端的集合,并且终端之间相互独立。

    两个均包含相同本地桥接网络 mynet 的 Docker 主机。虽然网络是相同的,但却是两个独立的网络。这意味着图中容器无法直接进行通信,因为并不在一个网络当中。每个 Docker 主机都有一个默认的单机桥接网络。


    image.png

    网络基本命令

    # 列出网络
    docker network ls
    
    # 网络详细
    docker network inspect
    
    # 创建新的单机桥接网络
    // Linux
    docker network create -d bridge localnet
    // Windows
    docker network create -d nat localnet
    
    # 创建一个新的容器,并接入到新建桥接网络 localnet 当中
    docker run -d --name c1 \
    --network localnet \
    alpine sleep 1d
    
    # 删除 Docker 主机上全部未使用的网络。
    docker network prune
    # 删除 Docker 主机上指定网络。
    docker network rm localnet
    
    # 给容器添加网络
    docker network connect nginx localnet
    # 连接时指定ip
    docker network connect --ip 192.168.10.10 net1 ctn1
    
    # 将两个容器 link方式连接到一起
    docker network connect --link my-ctn1 my-ctn2
    
    # 给容器断开网络
    docker network disconnect nginx localnet
    
    

    在 2015 年 3 月,Docker 公司收购了一个叫作 Socket Plane 的网络初创企业。收购的原因有二,首先是因为这会给 Docker 带来真正意义的网络架构,其次是让容器间联网变得非常简单,以至于开发人员都可以配置它。

    Docker 公司在这两点上都取得了巨大的成功。但是,简洁的网络命令实际由大量的组件构成。这部分内容是在进行生产环境部署和问题定位前必须要了解的。

    构建 Swarm

    【4.1】服务器安装 Docker Swarm中搭建 Portainer 中介绍了swarm的搭建

    覆盖网络

    # 在 swarm 的主机上执行
    docker network create -d overlay my-net
    docker network ls
    
    
    
    image.png image.png

    local bridge 网络 一般是以172 /16的
    swarm overlay 一般是 10 /24 的

    除了这两种还有
    host 即直接使用宿主机的网络
    none 即不适用任何网络
    ipvlan/macvlan 虚拟的ip/虚拟mac

    点波关注 系统搭建(docker)

    相关文章

      网友评论

        本文标题:【3.4】docker基础知识 网络

        本文链接:https://www.haomeiwen.com/subject/ktxydrtx.html