运行Windows应用程序的Docker

我理解Docker是一个集装箱化的工具,只有一套有限的API,以便与平台无关。 我想了解它在典型的Windows开发上的限制。 例如,它是否仅限于写入文件系统的访问(并因此排除了写入registry的应用程序)? 在Dock不适合的情况下是否有一定程度的复杂性(但是我听说docker支持MSSQL)?

这个问题真的很广泛,很难明确地回答,但是可以解决一些具体的问题。

我理解Docker是一个集装箱化的工具,只有一套有限的API,以便与平台无关。

从某种意义上说,您可以在CentOS,Ubuntu或任何其他Linux发行版上运行容器,但是您不能在Windows本机上运行Linux容器,或者在本地运行Linux上的Windows容器。 Docker for Windows Server 2016的介绍是一个很好的开始有关Windows容器信息的地方。


例如,它是否仅限于写入文件系统的访问(并因此排除了写入registry的应用程序)?

基于这个MSDN FAQ ,没有(强调我的)

Windows Server Containers是一种轻量级操作系统虚拟化方法,用于将应用程序或服务与在同一容器主机上运行的其他服务分开。 为了实现这一点,每个容器都有自己的操作系统,进程,文件系统,registry和IP地址的视图。

例如, SQL Server Express映像的 dockerfile修改了registry。


在Dock不适合的地方是否有一定的复杂程度?

问题不在于复杂性,而在于API的可用性。 这也是来自上面提到的Windows Server 2016的Docker

除了GUI应用程序和需要Windows远程桌面的应用程序之外,运行在Windows Server上的大多数应用程序都可以被docker化,以最小的成本运行在基于microsoft / windowsservercore的映像中。