当前位置: 首页 > news >正文

Windows Containers 大冒险: 容器网络

前言

得益于现代便捷的交通网络,无论是公路,铁路还是飞机,我们的出游变得十分便利。当数据畅游在容器世界中时,也会经历各式各样的网络。目前Windows容器支持 nat, overlay, transparent, l2bridge 和 l2tunnel。其中 l2tunnel 被用于Azure,不在本文的讨论范围内。接下来就来看看其它集中网络。

网络类型

在开始介绍容器网络前,各位需要了解 Hyper-V 的虚拟交换机类型。Hyper-V 现在有三种虚拟交换机类型,外部,内部和专用。在容器网络中使用的是外部和内部。外部虚拟交换机将连接到容器主机的的物理网卡。而内部虚拟交换机会在本地创建虚拟网卡。

要查看当前计算机的容器网络,则可以通过运行 docker network ls 获得。

C:\Users\greggu\vsrepos\posts
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a5f85bc334db        Default Switch      ics                 local
d2eb7fb1de63        External            transparent         local
4ea88ac7d5be        nat                 nat                 local
76080eecc255        none                null                local

NAT

当容器引擎第一次运行时默认会创建名为nat的网络,该网络使用内部虚拟交换机及名为WinNAT的Windows系统组件。默认情况下,Windows上运行的容器将被连接到该网络,并从 172.16.0.0/16 网络中自动获得IP地址。在NAT网络中,容器到容器主机的端口转发/映射也是被支持的。

Transparent

在容器启动时可以通过指定 --network 参数来连接到类型为 transparent 的网络,此时容器将通过Hyper-V外部交换机连接到物理网络,并从外部网络中的DHCP服务器中获得IP地址。也可以增加额外的--ip参数指定固定IP,但是需要注意的是目前Windows容器不支持--ip6参数。以下是启动容器时指定网络的一个例子。

docker run -it --rm --name demo02 --network External greggu/demo02:0.0.1 cmd

Overlay

当容器引擎运行在Swarm集群模式下时,容器会被连接到Overlay网络。连接到Overlay网络上的所有容器主机上的容器便可以相互通信。Overlay网络可以通过插件和Kubernetes一起使用。目前支持的网络插件是Flannel和OVN。

l2bridge

当容器被连接到l2bridge网络时,将和容器主机使用相同IP网段。但是IP地址必须从容器主机网络中静态分配。且该网络模式下,容器主机上的所有容器将因为MAC地址重写功能和容器主机共享同一个MAC地址。

相关文章:

  • Java判断对象类型是否为数组
  • Django学习
  • 性能是.NET Core的一个关键特性
  • itext7 html转pdf实现
  • django常见问题
  • mysql 查询表的字段数目
  • docker run 与docker start的区别
  • qsort用法
  • Python3学习笔记-构造函数与析构函数
  • SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)
  • Java入门 | 如何傻瓜式的安装JDK和配置环境变量?
  • git 比较 change to be committed
  • MySQL DDL--ghost工具学习
  • Vue父子组件传值 | 父传子 | 子传父
  • 【转】奇异值分解(SVD)原理详解及推导
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【知识碎片】第三方登录弹窗效果
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • js 实现textarea输入字数提示
  • JS函数式编程 数组部分风格 ES6版
  • Linux CTF 逆向入门
  • MaxCompute访问TableStore(OTS) 数据
  • spring boot 整合mybatis 无法输出sql的问题
  • Vue官网教程学习过程中值得记录的一些事情
  • 对超线程几个不同角度的解释
  • 精彩代码 vue.js
  • 排序算法之--选择排序
  • 数组的操作
  • 通信类
  • 微服务入门【系列视频课程】
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #14vue3生成表单并跳转到外部地址的方式
  • #pragma multi_compile #pragma shader_feature
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (09)Hive——CTE 公共表达式
  • (13):Silverlight 2 数据与通信之WebRequest
  • (a /b)*c的值
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .net core开源商城系统源码,支持可视化布局小程序
  • .Net 代码性能 - (1)
  • .net 简单实现MD5
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • /bin、/sbin、/usr/bin、/usr/sbin
  • [<死锁专题>]
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BUUCTF 2018]Online Tool(特详解)
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法