Docker真的支持原生态Mac和Windows了吗?

原创
云计算
今天看新闻,突然有爆料说docker已经支持Mac和Windows了,这不禁让我感慨发展之迅速。作为跟MFC,,Visual Studio, WinDBG,.Net打交道多年的我,甚是兴奋。不过,当我仔细阅读原文后,发现跟我们想的还相差甚远。

 今天看新闻,突然有爆料说docker已经支持Mac和Windows了,这不禁让我感慨发展之迅速。作为跟MFC,,Visual Studio, WinDBG,.Net打交道多年的我,甚是兴奋。不过,当我仔细阅读原文后,发现跟我们想的还相差甚远。

“Faster and more reliable: no more VirtualBox! The Docker engine is running in an Alpine Linux distribution on top of an xhyve Virtual Machine on Mac OS X or on a Hyper-V VM on Windows, and that VM is managed by the Docker application. You don’t need docker-machine to run Docker for Mac and Windows.”

仅凭这一句,我就顿感失望。Docker和VM的***区别就是,一个是操作系级虚拟化,一个是硬件级虚拟化。因此, Docker本身就是可以运行在VM之上的。你不能说在windows上装个虚拟机,然后再运行一个Docker,就说docker支持windows吧。为了让docker能在VM上运行,docker专门开发了Docker Toolbox和docker-machine,其核心都是通过虚拟机来运行docker,只不过是帮用户简化了中间的部署和配置流程。针对本次的Beta发布,更多的是优化的工作。笔者也提交了试用申请,然后进入了长长的waiting-list,不过我猜测,这次的版本改进主要体现在以下几个方面:

  1. 通过使用轻量级的linux发行版本,使VM更小,部署和安装更快。Alpine linux是一个非常轻量级的发型版,而且docker也有计划让alpine作为默认的基础镜像。
  2. 原生工具集支持。以前我们在非linux下运行时,都需要借助于类似MINGW的工具,模拟一下Shell。而这次Beta的退出,在这方面肯定是加强了,支持了原生态的命令。
  3. 更好的网络支持。可能会将Docker的网络系统集成到Mac和Windows的原生网络系统中,方便用户配置。
  4. 更好的对系统沙盒的适配。OS X和Windows本身都是支持沙盒的,可能在这方面会有所加强。

这一系列的改进,不可谓不大。看得出docker得到了Microsoft和Mac的很大帮助,同时也归功于docker在Unikernal 领域的收购。那么为什么原生态的windows和mac那么难支持呢?这必须从docker的基本原理说起:

  •  CGroup技术,这是用来控制CPU、内存、网络等资源限制的,这需要内核的支持,而目前只有linux的支持比较好。
  • lNamespace技术,这是用来做用户资源隔离的,注意这里是隔离,是让一个进程成为一个沙盒,拥有完全独立的PID,网络栈,主机名等,而这一技术目前也是只有linux支持比较好。

不过话说回来,Microsoft也不是吃素的,其实Windows Server 2016已经支持了原生态的docker,不过它基本上是完全重写了,连基础镜像都是windows server,这一点就很难融入docker的生态圈,毕竟Registry里面的基本都是运行在linux下的镜像。

作者介绍:晏东,精灵云(www.ghostcloud.cn)联合创始人,20年编程经验,全栈工程师,曾任索贝数码及赛门铁克架构师架构师,一直从事SAN、NAS及对象存储等分布式系统研发工作。2013年开始研究LXC和Docker相关技术,目前主要从事容器云平台镜像及仓库方面研发工作。

责任编辑:xinxiaoliang 来源: 51CTO
相关推荐

2014-02-09 14:34:56

2011-11-08 09:21:16

虚拟化云计算VDI

2010-02-23 11:22:47

Java

2013-10-21 15:11:15

OrmsqlOrm设计

2010-08-13 08:21:11

Windows Pho

2021-08-18 15:23:42

SDNSD-WAN软件定义网络

2010-08-23 09:23:49

Windows Pho

2009-06-03 08:50:03

微软Windows 7操作系统

2011-12-06 14:02:27

企业级移动开发

2019-01-07 16:35:58

微软开源Java

2013-07-15 16:55:45

2010-03-03 09:09:53

Android SDK

2009-02-27 09:41:15

Windows 7微软mov文件

2022-09-28 07:18:34

服务限流部署

2020-11-02 09:00:15

5G云原生互联网

2021-05-18 08:09:05

Windows10操作系统微软

2023-05-24 10:04:48

2012-01-12 12:53:25

2009-02-25 08:49:08

Windows 7微软虚拟机

2009-04-09 08:48:05

Windows 7微软操作系统
点赞
收藏

51CTO技术栈公众号