Windows容器必须在Windows宿主机上运行并启用Windows容器模式;支持Win10/11专业版或企业版(2004+)、Windows Server 2016/2019/2022;需用Docker Desktop≥4.15,拉取mcr.microsoft.com/windows/nanoserver:ltsc2022等匹配镜像,构建时避免COPY至C:根目录,调试注意防火墙、日志和磁盘路径。

Windows容器不能直接在Linux版Docker上运行,必须使用Windows宿主机并启用Windows容器模式——这是最核心的前提,绕不开。
确认系统与版本兼容性
Windows容器仅支持Windows 10/11专业版或企业版(2004及以上),且需64位系统;Windows Server 2016/2019/2022也支持,但功能和镜像生态有差异。Docker Desktop for Windows默认安装时会提示选择“Windows containers”或“Linux containers”,务必在首次启动前切换至Windows容器模式(右下角托盘图标右键 → Switch to Windows containers)。
- 运行winver确认系统版本不低于2004(即Build 19041+)
- 以管理员身份打开PowerShell,执行Get-ComputerInfo | Select WindowsVersion, WindowsBuildLabEx验证
- Docker Desktop版本建议≥4.15,旧版本对Windows Server 2022容器支持不完善
拉取并运行标准Windows基础镜像
微软官方提供mcr.microsoft.com/windows/servercore(完整版)和mcr.microsoft.com/windows/nanoserver(轻量版)两类基础镜像。nanoserver更常用,体积小、启动快,但仅支持.NET Core及部分原生应用。
- 拉取nanoserver最新稳定版:docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
- 交互式运行测试容器:docker run -it --rm mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd
- 若报错"no matching manifest",说明本地OS版本与镜像标签不匹配,需改用:ltsc2019或:20H2等对应版本标签
构建自定义Windows应用容器
Windows容器不支持COPY大文件到C:\的根目录(权限限制),推荐将应用放在C:\app等子路径,并用SHELL ["powershell", "-Command"]提升脚本执行灵活性。
- Dockerfile示例(部署一个简单IIS站点):
FROM mcr.microsoft.com/windows/nanoserver:ltsc2022
SHELL ["powershell", "-Command"]
RUN Install-WindowsFeature -Name Web-Server
COPY ./site/ C:\inetpub\wwwroot\
EXPOSE 80
CMD ["cmd", "/c", "ping -t localhost"] - 构建命令:docker build -t my-iis-app .
- 运行并映射端口:docker run -d -p 8080:80 --name iis-test my-iis-app
- 访问http://localhost:8080验证页面是否返回
常见问题与调试技巧
Windows容器日志不易读取,且网络隔离策略与Linux不同,需针对性处理。
- 容器退出后立即消失?添加--rm会自动清理,调试时去掉该参数,再用docker logs
查输出 - 端口无法访问?检查Windows防火墙是否放行,或改用--network="host"(仅限Windows Server,Docker Desktop不支持)
- 镜像拉取慢?配置国内镜像加速器:Docker Desktop → Settings → Docker Engine → 在JSON中添加:
"registry-mirrors": ["https://docker.1panel.dev"] - 磁盘空间不足?Windows容器默认使用C:ProgramDataDockerwindowsfilter,可修改Docker Desktop设置中的Disk image location重定向路径

















