Docker实验模式无法同时运行Windows与Linux容器?求解决方案
恢复Windows 10上Docker同时支持Windows和Linux容器的状态
我之前在Windows 10 22H2主机上,借助Docker的experimental特性可以并行运行Windows和Linux容器。但新配置的电脑(安装Docker Desktop 24.0.2)上这个功能失效了——现在只能手动切换Windows/Linux容器模式来运行对应实例,切换到Windows容器模式并启用experimental mode、重启服务后,仍然无法运行Linux容器。
当前docker info输出
Client: Version: 24.0.2 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.11.0 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-buildx.exe compose: Docker Compose (Docker Inc.) Version: v2.19.1 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-compose.exe dev: Docker Dev Environments (Docker Inc.) Version: v0.1.0 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-dev.exe extension: Manages Docker extensions (Docker Inc.) Version: v0.2.20 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-extension.exe init: Creates Docker-related starter files for your project (Docker Inc.) Version: v0.1.0-beta.6 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-init.exe sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.) Version: 0.6.0 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-sbom.exe scan: Docker Scan (Docker Inc.) Version: v0.26.0 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-scan.exe scout: Command line tool for Docker Scout (Docker Inc.) Version: 0.16.1 Path: C:\\Program Files\\Docker\\cli-plugins\\docker-scout.exe Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 2 Server Version: 24.0.2 Storage Driver: windowsfilter Windows: Logging Driver: json-file Plugins: Volume: local Network: ics internal l2bridge l2tunnel nat null overlay private transparent Log: awslogs etwlogs fluentd gcplogs gelf json-file local logentries splunk syslog Swarm: inactive Default Isolation: hyperv Kernel Version: 10.0 19045 (19041.1.amd64fre.vb_release.191206-1406) Operating System: Microsoft Windows Version 22H2 (OS Build 19045.3086) OSType: windows Architecture: x86_64 CPUs: 8 Total Memory: 31.88GiB Name: GEO-HjiS1MTZvp3 ID: dae2db1c-70b5-49bf-ba37-476db299acd7 Docker Root Dir: C:\\ProgramData\\Docker Debug Mode: true File Descriptors: -1 Goroutines: 40 System Time: 2023-07-07T13:57:03.2730227+02:00 EventsListeners: 4 Experimental: true ...
运行Linux容器时报错
C:\\work\\build>docker run mcr.microsoft.com/mssql/server:2019-latest --platform linux Unable to find image 'mcr.microsoft.com/mssql/server:2019-latest' locally 2019-latest: Pulling from mssql/server docker: image operating system "linux" cannot be used on this platform: operating system is not supported. See 'docker run --help'.
正常工作时的docker info输出
C:\\Users\\grap>docker info Client: Context: default Debug Mode: false Plugins: buildx: Build with BuildKit (Docker Inc., v0.6.3) compose: Docker Compose (Docker Inc., v2.0.0) scan: Docker Scan (Docker Inc., v0.8.0) Server: Containers: 1 Running: 1 Paused: 0 Stopped: 0 Images: 33 Server Version: 20.10.9 Storage Driver: windowsfilter (windows) lcow (linux) Windows: LCOW: Logging Driver: json-file Plugins: Volume: local Network: ics internal l2bridge l2tunnel nat null overlay private transparent Log: awslogs etwlogs fluentd gcplogs gelf json-file local logentries splunk syslog Swarm: inactive Default Isolation: hyperv Kernel Version: 10.0 19044 (19041.1.amd64fre.vb_release.191206-1406) Operating System: Windows 10 Enterprise Version 2009 (OS Build 19044.3086) OSType: windows Architecture: x86_64 CPUs: 12 Total Memory: 31.78GiB Name: ... ID: TNQG:YHL6:UHXO:BR24:A4NC:4ECA:JTOW:SLMF:AYLF:TJFM:HC7R:LXDA Docker Root Dir: D:\\ProgramData_Docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: true ...
核心问题
当前Docker仅加载了windowsfilter存储驱动,而正常工作时同时存在windowsfilter和lcow(Linux Containers on Windows)驱动,导致无法在Windows容器模式下运行Linux容器。
解决步骤
1. 调整Docker Desktop基础设置
- 打开Docker Desktop设置,进入Features in development:
- 取消勾选Use the WSL 2 based engine(LCOW基于Hyper-V,与WSL2引擎互斥)
- 确保Experimental features已勾选
- 点击Apply & Restart保存设置
2. 手动配置Docker daemon启用LCOW
编辑C:\ProgramData\Docker\config\daemon.json文件,添加以下配置:
{ "experimental": true, "storage-driver": "windowsfilter", "lcow": { "enabled": true } }
保存文件后,右键点击任务栏Docker图标选择Restart,或通过PowerShell执行命令重启服务:
Restart-Service Docker
3. 验证配置生效
重启后执行docker info,检查Server部分的Storage Driver是否显示windowsfilter (windows) lcow (linux),出现则说明LCOW驱动已加载。
4. 测试Linux容器运行
注意--platform参数的正确位置(需放在镜像名之前):
docker run --platform linux mcr.microsoft.com/mssql/server:2019-latest
5. 排查常见异常
- 检查Windows功能是否开启Hyper-V和Containers:打开
控制面板 -> 程序 -> 启用或关闭Windows功能,勾选后重启电脑 - 若新版本兼容性问题无法解决,可尝试降级到之前正常工作的Docker版本(如20.10.9)
内容的提问来源于stack exchange,提问作者PMF
相关产品推荐
相关产品推荐

