WinDocks发布了一个Windows版本的Docker引擎,它可以运行在作为底层宿主的Windows Server 2012或Windows Server 2012 r2系统上。它可以运行MS SQL Server的多个版本,并支持.NET 2、3.5和4.5。
WinDocks是一个移植到Windows的Docker引擎,它与近日发布的Docker on Windows并不相同。官方Docker客户端可以同WinDocks一起使用,后者仅支持Docker命令的一个子集,包括build、create、commit、exec、ps、start和stop。
WinDocks利用了一个由Uhuru软件构建的开源容器项目以及他们自己对Docker引擎的移植。
Windows 2012的内核没有为容器所需的隔离要求提供原生支持。WinDocks使用了Windows Job Objects作为容器的底层技术,后者可以将进程作为一个单元进行管理。
Job Object可以用于控制一组进程的资源使用率,如进程优先级和CPU使用率。这些控制包括针对文件权限、文件系统的自由访问控制列表(DACL)、针对命名空间隔离的注册表过滤和管理网络操作的Windows过滤平台。Windows过滤平台提供了网络数据包处理和过滤功能。
Linux容器的隔离,包括Docker提供的隔离,是通过控制组(cgroups)实现的。由于Windows 2012缺少类似的机制,需要将多种功能拼凑在一起才能在WinDocks中实现这项功能。InfoQ联系了WinDocks,以了解更多与由此而生的安全问题相关的信息。WinDocks创始人Ramesh Parameswaran答复说:
在每个租户都是不同组织的场景中,我们不建议使用Windocks。它不是一种100%进程隔离的方案,但也在很大程度上实现了隔离。WinDocks中的容器进程有内存和CPU使用限制,所以单个进程不会导致机器故障。
目前,WinDocks容器仅限于.NET和MS SQL Server镜像。这些镜像既可以是打包了产品的基本的SQL Server镜像,也可以是由基本镜像派生而来的自定义SQL镜像。为了创建一个自定义SQL镜像,用户可以从基本镜像启动一个容器,添加一个MDF文件,并将容器提交给一个新镜像,接下来,用户就可以使用这个新镜像启动自定义容器了。在MS SQL中,基础数据文件在创建时通常使用MDF扩展名。
此外,也可以通过网络挂载使用远程SQL Server数据库。据Parameswaran介绍,WinDocks接下来的重点是改进日志功能,提供Jenkins集成,以便纳入持续集成/持续交付(CI/CD)管道。
本文转自d1net(转载)