云服务器存储空间不足导致的docker image运行失败或Not enough space in /var/cache/apt/archives

最近遇到了两次空间不足导致docker实例下的mongodb运行失败的问题。

排查错误

首先用nettools看下mongodb端口有没有被占用:
sudo apt install net-tools

netstat --all --program | grep '27017'

原因和解决方案

系统日志文件太大

一般情况下日志文件不会很大,多在20M~200M以内。

运行 cd /var/log && ls -lahS 按大小排列一下日志文件,如果发现 var/log/btmp 太大(我的超过了1G)那就是中招了,可能是有人在暴力破解你的登录密码。

这里我使用较为简单的方式,修改掉默认ssh端口22(注意:ftp文件传输协议使用的端口默认也是22)为其他的,例如13202。如果有更好的方法稍后会补充。

先修改下ssh的默认端口,位置在:

nano /etc/ssh/sshd_config

在去VPS(云服务器)的管理面板防火墙删除掉22的入站规则,然后增加端口13202的入站规则:

Docker运行和缓存吃掉了所有剩余空间

  1. Docker自身运行过程中产生大量的build/pull缓存,而linux下安装的非docker-desktop版本(以我的Debian12为例)没有对镜像+缓存大小进行限制。

例如打开Windows版的Docker Desktop你可以看到:

解决方法:

使用docker system prune 手动清除不需要的

然后像docker desktop一样设定存储大小限制。我这里设置为了15G。

修改 sudo nano /etc/docker/daemon.json (没有就新建)。直接粘贴进去如下内容:

json 复制代码
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": []
}

使用 sudo systemctl restart docker 重启docker服务即可

相关推荐
DFT计算杂谈2 小时前
服务器通过pip安装Kimi Code CLI 和使用
运维·服务器·pip
java_logo7 小时前
Docker 部署 NetBox:轻松搭建 IPAM / DCIM 网络资产管理平台
docker·容器·轩辕镜像·netbox部署·netbox部署方案·netbox部署文档·docker部署netbox
码农阿豪7 小时前
【金仓数据库征文】Mac开发环境|SpringBoot3 + MyBatisPlus对接KES V9 Docker实战全指南
数据库·macos·docker
杨云龙UP7 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
PC2005-cloud7 小时前
从零上手 openGauss:Docker 部署 + 全场景连接教程
运维·docker·容器
独隅7 小时前
Cursor+GitOps 自动化运维实战:智能编写 Ansible 与 Terraform
运维·自动化·ansible
happymagic8 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
星空你好8 小时前
AI辅助运维:开源一个内网日志监控工具
运维
风曦Kisaki8 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
Dr.kangder9 小时前
嵌入式处理器仿真技术——Hypervisor 原理与实践
服务器·嵌入式硬件·架构·嵌入式