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

Windows Server上Bamboo CI/CD流水线Docker随机删除容器失败求助

Windows Server 2019上Docker随机删除容器失败(windowsfilter驱动权限问题)

问题描述

部署在Windows Server 2019机器上的Bamboo Server流水线,通过Docker容器构建代码并执行自动化测试,此前两年运行正常,近期无配置变更的情况下,Docker开始随机出现容器删除失败(多数失败、少数正常)。

固定报错信息:

Error waiting for container: container {CONTAINER_ID}: driver "windowsfilter" failed to remove root filesystem: failed to detach VHD: The device is not ready.: rename E:\Docker\windowsfilter{CONTAINER_ID} E:\Docker\windowsfilter{CONTAINER_ID}-removing: Access is denied.

报错后执行docker container ls -a可见容器处于Removal in progress状态,手动执行docker container rm {CONTAINER_ID}可顺利删除,且容器启动时已添加--rm参数。

已尝试的无效操作:

  • 重启机器
  • 重启Docker服务
  • 更新Windows系统
  • 清理所有容器、镜像、卷
  • 重新构建镜像
  • 使用进程隔离模式(--isolation=process)运行容器
  • 监控目标文件夹打开句柄(未发现进程访问)
    尚未尝试禁用杀毒软件(受组织政策限制)

可能的解决方向

  1. 调整Docker服务账户的目录权限
    确保Docker服务运行的默认账户NT AUTHORITY\LocalService拥有对E:\Docker\windowsfilter目录的完全控制权限:

    • 右键该文件夹 → 属性 → 安全 → 编辑 → 添加NT AUTHORITY\LocalService账户
    • 勾选“完全控制”权限,应用保存后重启Docker服务
  2. 延长VHD卸载超时时间
    编辑Docker配置文件C:\ProgramData\Docker\config\daemon.json,添加存储超时参数,延长VHD detach的等待时间:

    {
      "storage-opts": [
        "windowsfilter.timeout=300"
      ]
    }
    

    修改后重启Docker服务,超时时间可根据实际情况调整(单位:秒)

  3. 检查虚拟磁盘服务状态
    确认Windows系统的Virtual Disk服务正常运行:

    • 打开服务管理器(services.msc)
    • 找到Virtual Disk服务,设置启动类型为“自动”,确保状态为“正在运行”
  4. 流水线添加重试逻辑
    利用手动删除有效的特性,在Bamboo流水线的容器清理步骤后添加重试机制:

    • 执行强制删除命令docker container rm -f {CONTAINER_ID},设置2-3次重试,每次间隔10秒
    • 可配合docker container inspect {CONTAINER_ID}判断容器是否仍存在,决定是否重试

内容的提问来源于stack exchange,提问作者cecia234

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:03:14