• Docker网络模式


    一、Docker 网络模式

    Docker 容器的网络有五种模式:

    模式名称 功能 是否支持多主机 南北向通信机制 东西向通信机制
    bridge 默认设置,为容器创建独立的网络命名空间,容器具有独立的网卡等所有单独的网络栈。如果在容器运行时不加 --net 参数,就默认采用这种网络模式。 宿主机端口绑定 通过Linux bridge
    host 没有独立的网络环境,直接使用宿主机的 ip 和端口。 按宿主机网络通信 按宿主机网络通信
    none 为容器创建独立网络命名空间,但不为它做任何网络配置,容器中只有lo,用户可以在此基础上,对容器网络做任意定制。 无法通信 通过link通信
    container 指定一个容器与其共享 IP 和端口 宿主机端口绑定 通过link通信
    自定义 Docker 1.9版本以后新增的特性,允许容器使用第三方的网络实现或者创建单独的bridge 网络,提供网络隔离能力。 按网络实现而定 按网络实现而定 按网络实现而定

    注:南北向通信指容器与宿主机外界的访问机制,东西向通信机制指同一宿主机上,与其他容器相互访问的机制。

    二、自定义网络模式

    在自定义网络模式下,用户可以创建一个新的 Bridge 、Overlay 或 Macvlan 网络。与 Bridge 不同 Overlay 和 Macvlan 网络主要用于创建跨主机访问。

    2.1 Bridge 网络

    Bridge 网络是 Docker 中最常用的网络类型,创建一个 Bridge 网络的语法如下:

    docker network create --driver bridge --subnet 网络ip段 --gateway 网关IP --ip 指定静态IP 网络段名称 
    

    注:

    • --driver bridge 是默认项,可以不显示写出来
    • --ip 必须配合 --subnet参数一起使用

    2.2 Overlay 网络

    overlay 网络驱动程序在多个 Docker 守护进程主机之间创建一个分布式网络。这个网络在允许容器连接并进行安全通信的主机专用网络之上(overlay 覆盖在上面)。Docker 透明地处理每个 Docker 守护进程与目标容器之间的数据包的路由。

    当初始化 swarm 集群(注1)或将一个 Docker 主机加入已经存在的 swarm 集群时,Docker 主机上会创建两个新网络:

    • 一个称为 ingress 的 overlay 网络
    用来处理与 swarm 服务相关的控制和数据流。当创建的 swarm 服务没有连接到用户自定义的 overlay 网络时,这个服务会默认连接到 ingress 网络。
    
    • 一个称为 docker_gwbridge 的bridge 网络

      用来将单个的 Docker 守护进程连接到 swarm 中的其他守护进程。
      

    可以使用 docker network create 命令创建用户定义的 overlay 网络,就像可以创建用户定义的 bridge 网络一样。服务或容器一次可以连接到多个网络。服务或容器只能通过它们各自连接的网络进行通信。在创建 overlay 网络前,宿主机需要满足如下先决条件:

    • 宿主机防火墙指定端口开放

      - TCP 端口 2377:用于集群管理通信
      - TCP 和 UDP 端口 7946:用于节点之间通信
      - UDP 端口 4789:overlay 网络流量
      
    • 将宿主机加入到 swarm 集群

      # 将容器初始化为 swarm  集群
      docker swarm init 
      或
      # 将其加入到一个已存在的热情
      docker swarm join 
      

    创建 Overlay 网络:

    docker network create -d overlay 网络名
    

    要创建可以用于 swarm 服务和独立容器跟其他 Docker 守护进程中运行的独立容器通信的 overlay 网络,添加 --attachable 标志:

    docker network create -d --attachable overlay 网络名
    

    其他选项可以查看 docker network create --help 命令。

    注1:Docker SwarmDocker 自己的容器本地集群解决方案。

    三、使用指定网络模式创建容器

    使用默认 bridge 模式 , --net bridge 可以不用写

    docker run -di --name=myNginx   -p 80:80 nginx
    

    使用 host 模式

    docker run -di --name=myNginx --net host -p 80:80 nginx
    

    使用 none 模式

    docker run -di --name=myNginx --net none  -p 80:80 nginx
    

    使用 container 模式

    docker run -di --name=myNginx --net container:指定容器名  -p 80:80 nginx
    

    使用自定义模式

    1.创建自定义网段
    docker network create --subnet=192.168.0.0/16 mynetwork
    2.自定义网络模式创建容器
    docker run -di --name=myNginx --net mynetwork -p 80:80 nginx
    
  • 相关阅读:
    easyui datagrid 显示 footer
    ie浏览器 vuejs axios Promise 未定义
    react引入富文本编辑器TinyMCE
    react中ant-design组件实现textarea获取光标位置并插入表情图片
    前端日志埋点优化
    iframe父子页面通讯
    HTML5中的audio在react中的使用----语音播放进度条、倍速播放、下载等
    echarts简单入门
    在textarea里实现获取光标位置和选中内容
    lodash数组发现之旅--------The second day
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/11435074.html
Copyright © 2020-2023  润新知