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)管道。
评论