我正在尝试创建一个 Windows 10 映像,以便对现有的旧应用程序进行 dockerize。出于很好的理由,基础映像必须是 Windows 10而不是Windows Server。我该怎么做呢?
我想到的是:
1) 将我的 vanilla Windows 安装创建为 Hyper-V 机器
2)将应用程序安装到它上面
3)关闭这个虚拟机
4) 将生成的 VHDX 转换为 Windows 映像 (WIM) 文件
5) 不知何故将此用作 docker 的基础映像
我在正确的道路上吗?
不,这行不通。
Windows 容器(这与 Linux 上的 Docker 容器相同)基本上包含 Windows 的“用户空间”部分,但共享单个底层 Windows 服务器内核。
我找到了一种方便的思考方式,即每个容器有点像 Windows 中的一个单独的隔离用户帐户。您可以拥有多个用户帐户,每个帐户都有自己的私有文件集,并且彼此隔离,但它们仍然直接绑定到底层操作系统,并且每个都运行在同一个共享内核上。
这很棒,因为使用单个共享内核我们不需要 CPU 或内存级别的硬件虚拟化,因此事情可以更加高效。
然而,按照该设计,Windows 10 UI 和所有这些东西都不能与 Windows Server 2016 内核一起使用。他们可能会同时发生,但不太可能。
此外,您不能只获取 VHD/WIM 或其他类型的图像并说“那是我的容器”。您必须从一个“基本映像”开始,它实际上是您的主操作系统的表示,然后根据需要应用更改。我无法想象试图找出将基础 Windows 服务器转换为 Windows 10 所需的一组更改。
看起来有人做到了,但评论显示没有多少人可以复制:
https://medium.com/axon-technologies/installing-a-windows-virtual-machine-in-a-linux-docker-container-c78e4c3f9ba1