本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周一、三、五 与您不见不散!
上周三,我们为大家带来了新一期的网络研讨会——不改代码!看 Docker 如何将15年前的应用迁移到容器运行。现场我们从观众那里得到了一些非常棒的问题,但是由于时间有限我们并没有在会上一一回答所有的问题。今天我将在这里为大家总结6个具有代表性的问题,供大家学习参考。
问:当我们在 Windows 上运行 Docker 时,它是真正的容器化吗?还是说它只是通过 API 进行通信?
答:它是真正的容器化!早在2016年9月,Docker 就与 Microsoft 合作发布了 Windows Server 2016 版本,从那时起 Windows 内核就已经支持容器了。当您运行一个 IIS 网站的 Docker Windows 容器时,您可以看到在主机 Windows 服务器上运行的 w3wp.exe 工作进程,它是一个进程级隔离。
问:我们可以从 Docker Windows 容器的 Azure 存储中进行读取/写入吗?
答:当然可以!Docker 是一种运行应用程序的新方法,在 Docker 容器中,应用程序的内容是相同的。运行在 Docker 企业版中的 Docker Windows 容器拥有与主机服务器相同的网络访问权限,因此您可以从云 VM 或数据中心处访问 Azure 存储。
问:我如何知道要使用哪个 Microsoft 的基础服务器和功能(服务器核心与Nano、ASP 和 dotnet等)?我需要详细了解我的应用程序吗?有没有什么简单的方法可以让我的 Windows 应用程序识别出这一点?
答:第一种策略是在 Windows Server Core 之间,它几乎是 Windows Server 2016 体验减去UI和Nano服务器,但它仅支持64位应用程序和某些应用程序的运行时。
如果您知道应用程序使用的运行时,那么您可以使用构建在 .NET Framework 或 .NET Core 其中一个上的 Microsoft 镜像。否则,您还可以编写一个 Dockerfile 文件来复制当前的部署过程。您还可以点击文尾处“阅读原文”查看关于如何将 Windows 应用进行容器化改造的更多详情。
问:假设我想部署一台人们可以在 RDP 中运行 Excel 的虚拟机,这是否可以与 Windows Server Core 一起使用呢?
答:不可以!Windows Server Core 镜像中没有 Windows UI。Docker 用于运行没有图形 UI 的服务器应用程序 —— Web服务器、REST API、数据库和控制台应用程序。Microsoft 最近发布了一款支持 GU I应用的新的 Windows Docker 镜像,但目前尚不清楚它是否会支持 RDP。
问:您能谈谈关于 WinForm 和 WPF 应用程序吗?
答:它们现在不适合Docker容器,因为容器目前不支持 Windows GUI 子系统。您可以使用 Docker 构建和分发这些应用程序,但无法在容器中运行 Window s客户端应用程序。
**问:请详细说明如何将旧式配置(XML)更改为新的环境变量?我们应该更改旧的应用程序吗?或者编写一个从 Env 变量构造 XML 的中间应用程序?
**
答:最好的选择是坚持使用 .NET 配置模型并使用 XML 文件,这样您就不必更改应用程序。您可以在 Docker 镜像中打包默认配置文件以进行开发,这样开发人员就可以通过运行没有额外设置的容器来运行应用程序。然后,您可以将 XML 文件保存为集群中的 Docker 配置对象,并在其运行时将它应用于容器。