插件窝 干货文章 为什么docker本地镜像自动清除

为什么docker本地镜像自动清除

Docker 清理 自动 镜像 845    来源:    2025-04-28

Docker本地镜像自动清除问题分析

Docker本地镜像自动被清除通常是由以下几种原因导致的:

常见原因

  1. Docker自动清理机制

    • Docker有内置的自动清理机制,当磁盘空间不足时会自动清理未使用的镜像
    • 可通过docker system df查看磁盘使用情况
  2. 手动或定时清理脚本

    • 系统管理员可能设置了定期清理的cron任务
    • 例如:docker system prune -a -f命令
  3. Docker配置问题

    • docker.json配置文件中可能设置了自动清理策略
    • 检查/etc/docker/daemon.json文件
  4. 容器编排工具自动管理

    • 如果使用Kubernetes等编排工具,可能会有自动清理策略

解决方案

1. 禁用自动清理

修改Docker配置文件(/etc/docker/daemon.json):

{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

2. 调整清理策略

设置更合理的自动清理阈值:

sudo dockerd --storage-opt dm.basesize=20G

3. 手动管理镜像

定期手动清理而非自动清理:

# 清理未使用的镜像、容器、网络和构建缓存
docker system prune

# 仅清理未被任何容器引用的镜像
docker image prune -a

4. 检查系统定时任务

查看是否有定时清理任务:

crontab -l
systemctl list-timers

5. 增加存储空间

如果是空间不足导致,可考虑: - 增加磁盘空间 - 迁移Docker存储位置到更大分区

预防措施

  1. 标记重要镜像为重要:

    docker tag myimage:latest myimage:important
    
  2. 定期备份重要镜像:

    docker save -o myimage_backup.tar myimage:latest
    
  3. 监控Docker磁盘使用情况:

    watch -n 60 docker system df
    

通过以上方法,您应该能够解决Docker本地镜像自动清除的问题,并防止重要镜像被意外删除。