Docker容器的虚拟化 络

文章目录

  • 1 虚拟化 络
  • 2 单节点容器间通信
  • 3 不同节点容器间通信
  • 4 Docker容器 络
  • 5 Docker的四种 络模式
    • 5.1 host模式
    • 5.2 container模式
    • 5.3 none模式
    • 5.4 bridge模式

1 虚拟化 络

  • Linux内核支持六种名称空间,只要在用户空间有相应的客户端工具,都可以对对应的名称空间进行操作。

    • 主机名和域名的叫:UTS
    • 用户的叫:USER
    • 挂载文件系统的:Mount
    • 进程间通信的:IPC
    • 进程ID的:Pid
    • 络的:Net
  • 络作为docker容器化实现的6个名称空间的其中之一,是必不可少的。其在Linux内核2.6时已经被加载进内核支持了。

  • 络名称空间主要用于实现 络设备和协议栈的隔离

  • Linux内核支持二层和三层设备的模拟,宿主机的docker0就是用软件来实现的具有交换功能的虚拟二层设备,docker中的 卡设备是成对出现的,好比 线的两头,一头处于docker中,另外一头在docker0桥上,这个使用brctl工具就能实现。

      3 不同节点容器间通信

      4 Docker容器 络

      Docker在安装后自动提供3种 络,可以使用命令查看

      Docker使用Linux桥接,在宿主机虚拟一个Docker容器 桥,Docker启动一个容器时会根据Docker 桥的 段分配给容器一个IP地址,称为,同时Docker 桥是每个容器的默认 关。因为在同一宿主机内的容器都接入同一个 桥,这样容器之间就能够通过容器的直接通信。

      5 Docker的四种 络模式

      络模式 配置 说明
      host –network host 容器和宿主机共享Network namespace
      container –network container:NAME_OR_ID 容器和另外一个容器共享Network namespace
      none –network none 容器有独立的Network namespace, 但并没有对其进行任何 络设置, 如分配veth pair 和 桥连接,配置IP等
      bridge –network bridge 默认模式

      Docker创建容器时,使用选项–network来指定使用哪种 络模型。默认default为bridge (docker0)

    5.2 container模式

    • 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的 卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了 络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 卡设备通信。
    • Container 络模式是 Docker 中一种较为特别的 络的模式。处于这个模式下的 Docker 容器会共享其他容器的 络环境,因此,至少这两个容器之间不存在 络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在 络隔离。

    5.3 none模式

    使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何 络配置。也就是说,这个Docker容器没有 卡、IP、路由等信息。需要我们自己为Docker容器添加 卡、配置IP等。

    这种 络模式下容器只有lo回环 络,没有其他 卡。none模式可以在容器创建时通过–network none来指定。这种类型的 络没有办法联 ,封闭的 络能很好的保证容器的安全性。

    应用场景:

    • 启动一个容器处理数据,比如转换数据格式
    • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月2日
下一篇 2021年11月2日

相关推荐