用什么软件做网站原型,敦煌网跨境电商平台,名片在哪个网站可以做,深圳优化公司排名简介Docker#xff0c;或者准确一点说#xff0c;容器技术#xff0c;在近几年里几乎成为了应用分发和集群部署的默认技术了。背景部分#xff0c;如果感兴趣#xff0c;请参考闲谈集群管理模式一文。Docker 生态的成熟还有赖于其周边工具和实践模式的兴起。比如#xff… 简介Docker或者准确一点说容器技术在近几年里几乎成为了应用分发和集群部署的默认技术了。背景部分如果感兴趣请参考闲谈集群管理模式一文。Docker 生态的成熟还有赖于其周边工具和实践模式的兴起。比如曾经雨后春笋般出现的编排技术以及基于容器技术的 DevOps 实践大规模地开展。作者陈计节ThoughtWorks 高级咨询师多年的跨平台 .NET 开发者敏捷开发实践者技术布道师。那么这么好的技术在 Windows 上能用吗在各种场合都有人与我讨论这个的话题。每次听到这样的疑问我也是很无奈的。毕竟只要稍微搜索一下就不难回答是可以的。不过深入想一下人们有这样的疑问也是有道理的毕竟 Docker 是起源于 Linux 上的技术。Docker 是基于 Linux 内置的 Namespace 和 CGroup 等系统内隔离机制而抽象出来的一种轻虚拟化技术。与虚拟机相比它以一种轻量级的方式实现了运行空间的隔离。如果物理机是一幢住宅楼虚拟机就是大楼中的一个个套间而容器技术就是套间里的一个个隔断。不难理解Docker 作为一种隔断它并不能基于一种内核Linux提供另一种内核Windows的虚拟化运行环境。所以基于 Linux 的 Docker 是不支持运行 Windows 应用的。早在 Docker 之前Linux 就已经提供了今天的 Docker 所使用的那些基础技术。当年 Docker 仿佛一夜之间突然火爆全球的背后技术上的积累并不是瞬间完成的。这一切在 Windows 上显得有些滞后。在 Docker 已经众所周知的时候Windows 系统却根本没有类似的机制更别提 Windows 独有的工具链和实践方法了。所以我们看到早期 Windows 与 Docker 的交集只是为其提供应用开发环境。boot2docker与Docker for Windows可以在 Windows 开发面向 Docker 部署的应用程序——Windows 的桌面体验比 Linux 好太多所以很早就出现了在异构操作系统上以虚拟机的形式运行 Docker 的项目出现也就是 boot2docker。它既支持 Windows也支持 macOS。后来Docker 公司开始推出自己的Docker for Windows工具包它旨在为开发人员在Windows上开发面向Docker的应用程序提供完整的工具链其中包括运行环境、客户端Docker Swarm 编排工具和其他工具Docker for Windows 中负责运行环境配置的工具是Docker Machine。与 boot2docker 类似Docker Machine 也会在Windows上创建一个Linux虚拟机用于运行Docker引擎。也就是说这个环境也只支持Linux的应用程序格式的并不支持Windows应用程序的运行。在 Windows 上运行的 Docker for Windows图片来自Docker文档Windows容器技术正当 Linux 世界的容器技术借着 Docker 的东风刮遍世界的时候Windows 系统也发现了容器粒度的重要性。微软与 Docker 在 2014 年宣布了合作以期将容器技术带到 Windows Server 操作系统并为传统的 Windows 应用程序的容器化改造提供更直接的支持。不久之后微软在 Ignite 2015 上宣布将推出为容器优化的 Windows Nano Server第一次 Windows 容器真正与与开发者见面是在 Windows 10 的年度更新2016.8上它正式提供 Windows 容器的开发环境。在 2017 年 10 月发布的 Windows Server 1709 版本包含了 Windows 容器意味着这项技术可以用于生产环境了。Windows 容器是真正能够运行 Windows 应用程序的容器技术包括依赖 IIS、注册表等大量 Windows 特性的应用程序都可以在 Windows 容器中运行。虽然 Windows 对容器的支持有些姗姗来迟但社区对 Windows 容器的关注和运用却是异常活跃。这主要得益于容器技术本身生态的成熟一来人们对这项技术已经有了充分的认知同时周边工具和实践都已经日趋完善。另一方面在与 Docker 公司一同打造这项技术的过程中也注意了与已有技术的兼容性。人们发现在电脑上启用 Windows Container 功能之后接下来的操作步骤仍然是基于 Docker 客户端完成的命令行参数与 Linux 上的 Docker 也没有区别。几乎与 Windows 容器技术本身日趋成熟过程的同时周边工具对 Windows 容器的支持也在同步完善。Docker for Windows 在新的版本中添加了一个贴心的菜单可以一键切换 Linux 容器和 Windows 容器Kubernetes 从 1.5 版本开始增加对 Windows 容器的支持云环境方面包括 Azure 和 AWS 在内的众多云环境都第一时间提供了 Windows 容器的支持……Windows容器架构Windows 是如何既提供自有容器技术又提供与 Docker 兼容的操作接口的呢 下面的上图是 Linux 容器的架构下图则是 Windows 容器的。可以发现两者结构很类似。与 Linux 类似Windows 也新新抽象出来了 CGroup 和 Namespace 的概念并提供出一个新的抽象层次 Compute Service即宿主机运算服务Host Compute Servicehcs。相较于底层可能经常重构的实现细节hcs 旨在为外部比如 Docker 引擎提供较稳定的操作接口。hcs 的操作接口目前有 Go 语言版本以及 C# 语言版本前者目前在 Docker 客户端中用来操作 Windows 容器。图片来自 Black Belt 在 DockerCon 的演讲Docker 与 Windows 容器揭秘容器镜像方面微软自己提供了 Server Core 和 Nano Server 两种服务器版本。Server Core 可以理解为 Windows Server 去掉了 GUI 的部分因此功能更完整比如包括文件服务器、DNS 服务器等功能同时镜像大小也更大2GB~5GB而 Nono Server 则是专为容器优化的迷你型系统只包含有核心的 Windows 服务器功能镜像大小为130MB~400MB。基于基础镜像来构建自己镜像的方法与 Linux 镜像是一样的所以 DockerFile 文件的格式和语法并没有不同。授权方面只要用户已经取得宿主机的授权微软并不会单独向用户收取容器镜像的授权费。小结容器技术本身以及围绕它的一系列工具和实践让应用程序的打包和发布变得标准化很大程度上可以消除应用程序对特定环境的依赖进而为高效的集群化部署和运维提供有力保障。作为容器技术的代表Docker 可以以两种形式运行在 Windows 上以 Hyper-V 虚拟机的形式运行 Linux 格式的容器或者运行原生的 Windows 容器。其中前者运行 Linux 格式的应用程序后者能运行 Windows 应用程序。如果稍微用一点技巧还可以让这两者同时运行在 Windows 电脑上。Windows 10 和 Windows Server 都提供了对 Windows 容器的支持各种容器化工具对 Windows 容器的支持也在日趋完善当中。基于 Windows 开发新的应用时一方面可以优先考虑跨平台容器化部署的能力另一方面也可以与存量应用程序一样考虑借助 Windows 容器技术实现容器化、云原生的特性。END原文地址https://blog.jijiechen.com/post/docker-on-windows/.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com