关于Windows平台上的Docker,我们需要了解哪些事实?

简介:
 
  【51CTO.com快译】这个周末是在Monki Gras大会上度过的,在今年的这场软件开发研讨活动当中,人们的关注重点放在了软件打包这一议题身上。不少发言者谈到了容器技术在DevOps及持续交付领域的重要作用。然而作为一种普遍误解,很多朋友仍然认为Docker只能运行在Linux虚拟机之上。

关于Windows平台上的Docker,我们需要了解哪些事实?

事实并非如此:Windows拥有自己的容器技术,其立足于Docker但能够在微软环境下运行。当然,我理解为何会出现这种误解:Windows 10刚刚新增Linux子系统功能,而Windows Server 2016在同一时间添加了Docker工具。这在一定程度上让人们将Linux与Docker联系了起来。

微软对容器技术的重视已经成为近年来最重要的跨领域发展举措之一。毫无疑问,容器技术已经迅速成为DevOps与持续集成实现工作中的关键性组成部分。微软当然也开始采取行动,而其工具也反映出微软如何使用软件并构建应用。

关于容器

通过将应用所使用的服务与操作系统需要的服务加以拆分,现代容器技术已经成为服务器端应用打包与部署的有力工具。其便携性能够在本地数据中心、私有、混合乃至公有云中得到充分体现。打包在容器内的应用与主机操作系统无关,其可在任意类似的容器主机上运行,而不必作出任何变更。

将应用打包在容器内意味着该应用能够轻松获得运行所必需的全部配置文件及依赖选项。大家可以在不影响底层操作系统的前提下更新容器版本,并在不变更代码的情况下实现容器迁移。这种对基础设施与应用部署工作进行分别管理的方式,正是DevOps模式的逻辑目标所在。

原本作为大型机技术的容器方案(或者至少类似于命名空间与进程隔离的表现形式)如今已经能够在各类Unix系统中找到,包括Linux与Solaris。

Windows容器探秘

现在,随着Windows Server 2016的发布,Windows也有了自己的容器技术。其基于开源Docker容器,但同时增加了对PowerShell的支持并能够对Nano Server与Hyper-V容器进行额外隔离。

Docker仍是微软容器战略的核心所在。大家不仅能够利用Swarm、Machine乃至Data Center等产品管理Windows与Linux容器,甚至能够在Windows 10上通过Bash shell将Docker客户端安装在Linux子系统中并加以使用。不过这种方式要求大家提供证书,因此用户普遍更倾向直接选择Docker的Windows版本应用。

与多数Windows Server功能一样,Windows容器可通过Windows对话框或者PowerShell进行安装。采用PowerShell更为高效,因为OneGet PowerShell模块能够同时安装Windows容器与Docker,且只需一次重启即可起效。(如果大家希望使用Hyper-V容器,则还需要启用Hyper-V虚拟化选项。)

Windows容器得到了开发与运营团队的热情支持,自Windows Server 2016通用版本发布以来,Docker Hub容器库的基础Windows镜像下载量已经突破100万次。

在Windows上构建并部署容器

容器不只是一款服务器工具,Windows 10的专业版与企业版皆支持该项技术。另外由于Windows 10只支持Hyper-V容器,所以大家还需要安装Hyper-V。

在Windows容器功能启用后,大家还需要下载并安装Docker Engine与Docker客户端,而后安装您为应用配置的基础镜像。

微软建议大家利用Nano Server作为Windows容器基础构建镜像,其体积小巧且速度极快,没有UI,因此部署更快且相对更安全。

另外,虽然大家可以利用Nano Server托管Node.js等运行时,但其本身其实主要用于托管.Net Core应用。大家无法获得全部.Net功能。不过如此一来,大家可以单纯将Nano Server托管的Windows容器视为新应用工具,而非对原有代码的托管方案。

正因为上述差异,很多企业更倾向于利用Windows Server Core作为基础镜像。虽然其体积更大且部署时间更长,但Windows Server Core支持当前Windows SDK及全部.Net实现方式。大家可以选择在现有服务器与容器之间轻松切换,从而让应用随时部署在您需要的平台之上。当应用被部署在容器中后,开发者能够进行进一步拆分,例如将API连接器移动至其自有Nano Server容器以简化应用维护工作。

Windows容器现在已经可作为Visual Studio 2017的部署目标。大家可以将应用构建并交付为容器形式以供测试。对于容器技术的推广而言,如此简单的一键式实现方式也确实非常重要。

由于微软Azure将很快支持嵌套虚拟化,因此我们将能够借容器之力在公有云内添加更多隔离能力,从而帮助监管机构进一步了解将应用迁移至容器以及云环境的可行性及重要意义。

 
  作者:核子可乐译
来源:51CTO
目录
相关文章
|
2月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
325 4
|
9天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
107 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
3月前
|
监控 Windows
Windows平台RTSP|RTMP播放器如何实时调节音量
我们在做Windows平台RTSP、RTMP播放器的时候,有这样的技术需求,特别是多路监控的时候,并不是每一路audio都需要播放出来的,所以,这时候,需要有针对音量调节的设计
|
25天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
2月前
|
NoSQL Shell MongoDB
Windows 平台安装 MongoDB
10月更文挑战第10天
67 0
Windows 平台安装 MongoDB
|
3月前
|
监控 C# 块存储
Windows平台RTSP|RTMP播放器如何叠加OSD文字
做Windows平台RTSP|RTMP播放器的时候,特别是多路播放场景下,开发者希望可以给每一路RTSP或RTMP流添加个额外的OSD台标,以区分不同的设备信息(比如添加摄像头所在位置),本文主要探讨,如何动态添加OSD台标。
Windows平台RTSP|RTMP播放器如何叠加OSD文字
|
3月前
|
Linux Android开发 iOS开发
Windows平台RTSP|RTMP播放器如何实现实时录像功能
Windows平台RTSP、RTMP播放器实时录像接口设计,实际上,除了Windows平台,我们Linux、Android、iOS平台也是一样的设计,单纯的录像模块,如果做的全面,也不是一两个接口可以搞定的
102 1
|
2月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
299 0
|
4月前
|
编解码 开发工具 数据安全/隐私保护
如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?
一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。