Windows Docker启动MS SQL Server 2019镜像失败:创建shim任务出错
解决Windows Docker Desktop(Linux容器模式)启动SQL Server 2019容器的rootfs错误
针对启动SQL Server容器时出现的invalid rootfs: stat ... no such file or directory错误,可按以下步骤排查修复:
1. 清理损坏的容器与镜像缓存
- 删除失败创建的容器:
docker rm -f sqlserver - 彻底清理未使用的镜像、容器、卷和缓存:
docker system prune -af - 重新拉取干净的SQL Server镜像:
docker pull mcr.microsoft.com/mssql/server:2019-latest
2. 验证Docker Desktop的WSL后端配置
- 打开Docker Desktop设置,进入Resources > WSL Integration,确保启用了正在使用的WSL发行版(如Ubuntu)。
- 若之前修改过
data-root配置,确认路径格式正确(JSON中需用双反斜杠),例如:
修改后重启Docker Desktop生效。"data-root": "D:\\Docker\\data"
3. 修正数据卷挂载方式
避免使用相对路径,改用绝对路径挂载,同时确保本地目录存在且Docker有访问权限:
- 使用Windows绝对路径(需先创建
D:\docker\sqlserver\data目录):docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPass123!" -p 1433:1433 -v D:/docker/sqlserver/data:/var/opt/mssql/data --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest - 或使用WSL路径(需先在WSL中创建
/mnt/d/docker/sqlserver/data目录):docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPass123!" -p 1433:1433 -v /mnt/d/docker/sqlserver/data:/var/opt/mssql/data --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest - 检查Docker Desktop的Resources > File Sharing,确认已添加D盘的访问权限。
4. 先启动无挂载的基础容器验证
先排除挂载问题,执行简化版启动命令:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPass123!" -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest
若容器能正常启动,再逐步添加挂载参数和其他配置。
5. 修复WSL文件系统(若为WSL后端异常)
- 打开PowerShell,关闭所有WSL实例:
wsl --shutdown - 重启Docker Desktop后再次尝试启动容器。
- 若问题仍存在,可重置WSL发行版(以Ubuntu为例):
重新安装WSL发行版后,在Docker Desktop中重新配置WSL集成。wsl --unregister Ubuntu
内容的提问来源于stack exchange,提问作者zaakm
相关产品推荐
相关产品推荐

