基于Linux容器的Azure App Service:如何清理旧部署?
问题解决思路:Azure App Service Linux容器部署空间不足
核心原因说明
- Azure App Service Linux的容器镜像不占用网站文件系统配额,而是使用主机本地的临时容器存储区域,这个空间和你看到的250GB网站存储配额相互独立。多次部署后旧镜像未自动清理,会填满该区域,导致新镜像解压后空间不足启动失败。
- Kudu SSH环境是沙箱限制,本身就没有docker命令,且禁止root级别的工具安装,这是平台安全限制,并非你遗漏了配置。
无需Docker命令的临时清理方法
登录App Service的高级工具(Kudu),进入Debug console > SSH,执行以下命令清理冗余容器文件:
# 停止运行中的容器进程 sudo killall docker-containerd-shim # 删除旧镜像的存储层文件 rm -rf /var/lib/docker/image/overlay2/layerdb/mounts/* rm -rf /var/lib/docker/overlay2/*
注意:执行前确保当前无业务运行,避免影响线上服务。
长期优化配置
- 开启自动镜像清理:在App Service的「配置-应用设置」中添加
WEBSITE_DOCKER_CLEANUP_ENABLED,值设为true。该配置会让平台在每次部署新镜像后自动清理无用的旧镜像和容器。 - 优化镜像体积:采用Alpine基础镜像、多阶段构建、清理构建依赖等方式缩小Docker镜像大小,从根源减少空间占用。
- 调整部署流程:在Azure DevOps部署任务前添加前置步骤,先重启App Service释放空间,再部署新镜像。示例Azure CLI命令:
az webapp restart --name <你的App Service名称> --resource-group <资源组名称>
额外提示
如果使用的是**隔离层(Isolated)**App Service计划,可联系Azure支持调整主机容器存储配额;基础/标准层无此权限,只能通过上述方案优化。
内容的提问来源于stack exchange,提问作者mbue
相关产品推荐
相关产品推荐

