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

GCP中Docker Run报‘设备上没有剩余空间’的问题排查与扩容

GCP中Docker镜像存储及空间扩容解决方案

关于GCP的Docker存储分配

GCP默认将Docker的镜像、容器数据存储在VM实例的根磁盘中,根磁盘有固定的默认容量(通常为10GB,具体取决于实例类型)。即使是新账号,若你的镜像体积较大,也会耗尽根磁盘剩余空间,导致docker run时报错“设备上没有剩余空间”。

扩容解决方案

方案一:扩容VM根磁盘

这是最直接的方法,适用于不想额外挂载磁盘的场景:

  1. 停止目标VM实例(部分实例类型支持在线扩容,但停止操作更稳妥)
  2. 在GCP控制台进入该VM的详情页,切换到「磁盘」标签,选中根磁盘后点击「编辑」
  3. 修改磁盘大小为所需容量(例如20GB或更大),保存设置
  4. 启动VM实例,登录后扩展文件系统:
    • 若使用ext4文件系统,执行:resize2fs /dev/sda1(可通过df -h确认根挂载点对应的设备名)
    • 若使用xfs文件系统,执行:xfs_growfs /

方案二:挂载额外持久磁盘存储Docker数据

如果不想扩容根磁盘,可单独挂载一块持久磁盘专门用于Docker存储:

  1. 在GCP控制台创建一块新的持久磁盘,设置合适的容量
  2. 将该磁盘挂载到目标VM实例上
  3. 登录VM,格式化磁盘(假设磁盘设备名为/dev/sdb):mkfs.ext4 /dev/sdb
  4. 创建新的Docker数据目录:mkdir -p /var/lib/docker-new
  5. 挂载磁盘到新目录:mount /dev/sdb /var/lib/docker-new
  6. 停止Docker服务:systemctl stop docker
  7. 迁移原Docker数据到新目录:rsync -a /var/lib/docker/ /var/lib/docker-new/
  8. 备份原Docker目录:mv /var/lib/docker /var/lib/docker-old
  9. 配置Docker使用新存储路径(二选一):
    • 方式1:创建软链接:ln -s /var/lib/docker-new /var/lib/docker
    • 方式2:编辑/etc/docker/daemon.json,添加配置:
      {
        "data-root": "/var/lib/docker-new"
      }
      
  10. 启动Docker服务:systemctl start docker
  11. 验证配置:执行docker info | grep "Docker Root Dir",确认路径已更新为新目录

额外排查建议

  • 执行docker system df查看Docker的详细空间占用,确认是否有未清理的临时构建缓存(可尝试docker builder prune清理构建缓存)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:17:35