当前位置: 首页 > 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)原理详解及推导
  • php的引用
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android交互
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • js写一个简单的选项卡
  • opencv python Meanshift 和 Camshift
  • php ci框架整合银盛支付
  • Promise面试题,控制异步流程
  • ReactNative开发常用的三方模块
  • 闭包,sync使用细节
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用API自动生成工具优化前端工作流
  • 使用docker-compose进行多节点部署
  • 思否第一天
  • 一些关于Rust在2019年的思考
  • 自动记录MySQL慢查询快照脚本
  • ​Linux·i2c驱动架构​
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (¥1011)-(一千零一拾一元整)输出
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (rabbitmq的高级特性)消息可靠性
  • (待修改)PyG安装步骤
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (一)WLAN定义和基本架构转
  • ***详解账号泄露:全球约1亿用户已泄露
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .md即markdown文件的基本常用编写语法
  • .NET delegate 委托 、 Event 事件
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET框架
  • .net中调用windows performance记录性能信息
  • .Net中间语言BeforeFieldInit
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Not - Empty-Null-Blank
  • [ C++ ] STL_list 使用及其模拟实现
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [100天算法】-不同路径 III(day 73)
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——