You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker运行容器报错OCI runtime create failed: invalid rootfs求助

问题分析与解决方法

错误原因

你的问题确实和修改daemon.json中的data-root路径直接相关:

  • 路径包含空格,且在JSON配置中使用双反斜杠的写法,导致Docker在解析路径时出现混乱,错误日志里同时出现Linux风格的/和Windows风格的\就是典型表现——Docker试图在类Unix的容器运行时环境中解析Windows格式的带空格路径,自然找不到对应文件。
  • 可能修改配置后未完全重启Docker服务,导致新旧路径配置冲突,缓存的镜像/容器元数据路径不匹配。

解决步骤

1. 修正daemon.json的路径配置

打开daemon.json(通常位于C:\ProgramData\Docker\config),将data-root的路径改为正斜杠写法(JSON中无需转义),或者直接改用无空格的路径(更推荐,避免后续其他问题):

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "data-root": "E:/my software/Docker/ProgramData"
}
// 或者更稳妥的无空格路径:
// "data-root": "E:/Docker/ProgramData"

2. 完全重启Docker服务

  • 打开Docker Desktop,点击右上角设置图标,选择Restart;
  • 或者通过Windows服务管理器,找到Docker Desktop Service,右键选择重启。

3. 清理旧镜像与缓存

删除之前构建的有问题的镜像,并清理Docker缓存:

# 删除friendnet-client镜像
docker rmi friendnet-client
# 清理所有未使用的镜像、容器、卷和网络(确认后输入y执行)
docker system prune -a

4. 重新构建并测试

回到项目目录,重新构建镜像并运行:

# 重新构建镜像
docker build -t friendnet-client .
# 测试进入容器shell
docker run -it friendnet-client sh

额外建议

  • 尽量避免在Docker的核心路径(如data-root)中使用空格,CLI工具和容器运行时对带空格路径的解析容易出现兼容性问题;
  • 如果使用WSL2作为Docker后端,建议将data-root设置到WSL的文件系统中(比如\\wsl$\Ubuntu\var\lib\docker),不仅能避免路径格式问题,还能提升Docker的运行性能。

内容的提问来源于stack exchange,提问作者Haitam-Elgharras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:25:58