简介
Windows是大众普遍使用的操作系统,因为其操作简洁收到大家的支持
工作中总会需要用到该操作系统,可虚拟机却很笨重,怎么办?根据自己的需求做个Windows容器是不错的选择
容器基础映像
适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016
Windows 提供了四个容器基础映像,用户可以基于它们进行构建。每个基础映像都是 Windows 或 Windows Server 操作系统的一种不同类型,其磁盘占用量不同,并带有一组不同的 Windows API。
Windows Server 核心
支持传统的 .NET Framework 应用程序。
https://hub.docker.com/_/microsoft-windows-servercore
Nano Server
针对 .NET Core 应用程序构建。
https://hub.docker.com/_/microsoft-windows-nanoserver
Windows
提供完整的 Windows API 集。
https://hub.docker.com/_/microsoft-windows
Windows Server
提供完整的 Windows API 集。
https://hub.docker.com/_/microsoft-windows-server/
选择基础映像
如何选择用作构建基础的合适基础映像?对大多数用户而言,Windows Server Core
和 Nanoserver
将是最适合使用的映像。下面简要介绍了每个基础映像:
-
Nano Server
是用于新应用程序开发的超轻型 Windows 产品/服务。 -
Server Core
中等大小,是“提升和迁移”Windows Server 应用的不错选项。 -
Windows
是最大的映像,并且对工作负载具有完整的 Windows API 支持。 -
Windows Server
比 Windows 映像略小,具有完整的 Windows API 支持,并允许你使用更多服务器功能。
指南
虽然你可以自由决定使用哪个映像,但也可以根据下面提供的一些指导原则来进行选择:
-
你的应用程序是否需要完整的 .NET Framework? 如果此问题的答案为“是”,则应选择
Windows Server Core
。 -
你是否基于 .NET Core 构建 Windows 应用? 如果此问题的答案为“是”,则应选择
Nanoserver
。 -
Windows Server Core 容器映像是否缺少你的应用所需的依赖项? 如果此问题的答案为“是”,则应尝试选择
Windows
。此映像远远大于其他基础映像,但它携带了许多核心 Windows 库(例如 GDI 库)。 -
你是 Windows 预览体验成员吗? 如果是,则应考虑使用映像的预览体验版。有关详细信息,请参阅下面的“适用于 Windows 预览体验版的基础映像”。
-
容器工作负载是否需要 GPU 加速支持? 如果需要,则应考虑使用
Windows Server
映像,以便为 Windows 容器工作负载提供硬件加速。
许多 Windows 用户希望将依赖于 .NET 的应用程序容器化。除了此处所述的四个基础映像,Microsoft 还发布了多个 Windows 容器映像(例如 .NET Framework 映像和 ASP .NET 映像),这些映像预配置了常用的 Microsoft 框架。
Windows 与 Windows Server
Windows Server
映像 (3.1 GB) 的大小略小于 Windows
映像 (3.4 GB)。Windows Server 映像还继承了 Server Core 映像的所有性能和可靠性改进,支持 GPU,并且没有 IIS 连接限制。要使用最新的 Windows Server 映像,需要安装 Windows Server 2022。Windows Server 2022 不支持 Windows 映像。
Windows Server Core 与 Nanoserver
Windows Server Core
和 Nanoserver
是要使用的最常见基础映像。这两种映像之间的主要区别是,Nanoserver 中的 API 图面要小得多。Nanoserver 映像中缺少 PowerShell、WMI 和 Windows 服务堆栈。
Nanoserver 用于提供恰好足够的 API 图面来运行依赖于 .NET Core 或其他新式开源框架的应用。API 图面较小的好处是,Nanoserver 映像的磁盘占用量远远小于其余的 Windows 基础映像。请记住,你始终可以在自己认为合适的条件下在 Nano Server 上添加层。
设置环境
安装容器运行时
Windows 10 和 11
可以使用以下步骤在 Windows 10 或 11 专业版和企业版上安装 Docker。
-
下载并安装 Docker Desktop,创建 Docker 帐户(如果还没有该帐户)。你可以为个人或小型企业用户创建免费的 Docker 帐户,但是,对于大型企业,则需要支付月费。如需更多详细信息,请参阅 Docker 文档。
-
在安装过程中,将默认容器类型设置为 Windows 容器。若要在安装完成后进行切换,可以在 Windows 系统任务栏中使用 Docker 项(如下所示),也可以在 PowerShell 提示符下使用以下命令:
控制台
& $Env:ProgramFilesDockerDockerDockerCli.exe -SwitchDaemon .
Windows 管理中心
可使用 Windows Admin Center 将 Windows Server 计算机适当地设置为容器主机。若要开始,请确保 Windows Admin Center 实例上已安装最新的容器扩展。若要详细了解如何安装和配置扩展,请查看 Windows 管理中心文档。安装容器扩展后,定向到要配置的 Windows Server 计算机,然后选择容器选项:
单击“安装”按钮。Windows Admin Center 将在后台开始 Windows Server 和 Docker 的配置。完成此过程后,你可刷新页面,查看容器扩展的其他功能。
-
成功切换到 Windows
docker version
得到下面提示表示切换成功:
PS C:Usersqingjiegong> docker version
Client:
Cloud integration: v1.0.35+desktop.5
Version: 24.0.6
API version: 1.43
Go version: go1.20.7
Git commit: ed223bc
Built: Mon Sep 4 12:32:48 2023
OS/Arch: windows/amd64
Context: default
Server: Docker Desktop 4.25.1 (128006)
Engine:
Version: 24.0.6
API version: 1.43 (minimum version 1.24)
Go version: go1.20.7
Git commit: 1a79695
Built: Mon Sep 4 12:31:39 2023
OS/Arch: windows/amd64
Experimental: false
查看windows版本:
-
打开“运行”窗口,方法是同时按下"windows"键和"R"键
-
在“运行”窗口中输入"winver"并按下"确定"键
-
弹出的窗口将显示您的windows版本和版本号
下载 Windows Server 2019 镜像
关于 Windows 的镜像,除了上面使用
docker search windows
搜索镜像以外,也可以在 docker hub 上查找 Windows 镜像,地址:https://hub.docker.com/search?q=windows&type=image
拉取镜像:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
注意:由于加速器在 Windows 容器并不适用,所以下载速度较慢。
运行容器进入cmd.exe终端
docker run -it mcr.microsoft.com/windows/nanoserver:ltsc2019 cmd.exe
增加D盘
因为启动后的容器是无法添加盘符的,所以需要使用dockerfile创建一个带有D盘的容器
FROM <Base image like microsoft/dotnet-framework>
VOLUME ["D:"]
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
VOLUME ["D:"]
windows系统版本的选择,要使用最新的 Windows Server 映像,需要安装 Windows Server 2022。Windows Server 2022 不支持 Windows 映像。
本人的主机系统是19版本,镜像采用2019
dockerfile:
FROM mcr.microsoft.com/windows/nanoserver:ltsc2019
LABEL maintainer="[email protected]"
#增加D盘根据自己情况而定
#VOLUME ["D:"]
python实例
dockerfile:
FROM mcr.microsoft.com/windows/servercore:ltsc2019
LABEL Description="Python" Vendor="Python Software Foundation" Version="3.10.0"
RUN powershell.exe -Command
$ErrorActionPreference = 'Stop';
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
wget https://www.python.org/ftp/python/3.10.0/python-3.10.0.exe -OutFile c:python-3.10.0.exe ;
Start-Process c:python-3.10.0.exe -ArgumentList '/quiet InstallAllUsers=1 PrependPath=1' -Wait ;
Remove-Item c:python-3.10.0.exe -Force
RUN echo print("Hello World!") > c:hello.py
CMD ["py", "c:/hello.py"]
docker build -t python:latest .
原文始发于微信公众号(qingjiegong):搭建一个Windows系统容器
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论