Clean Docker Images and Container by Cron Job

1.Cretae a clean_docker_containers.sh to clean containers (status: exited, dead)

bash 复制代码
#!/bin/bash

# 找到所有状态不正常的容器
containers=$(docker ps -a --filter "status=exited" --filter "status=dead" --format "{{.ID}}")

if [ -z "$containers" ]; then
    echo "No containers to clean."
else
    echo "Cleaning up the following containers:"
    echo "$containers"
    echo

    for container in $containers; do
        echo "Deleting container $container"
        docker rm -f $container
    done
fi

# 设置 Cron Job:crontab -e
  1. Create a delete_docker_images.sh to delete images with keyword.
bash 复制代码
#!/bin/bash

# 检查是否提供了关键词参数
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <keyword>"
    exit 1
fi

# 关键词参数
KEYWORD=$1

# 找到所有包含关键词的镜像
images=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep ${KEYWORD})

if [ -z "$images" ]; then
    echo "No images found with keyword: ${KEYWORD}"
else
    echo "Images to be deleted:"
    echo "$images"
    echo

    for image in $images; do
        echo "Deleting image $image"
        docker rmi -f $image
    done
fi
  1. Create a run_clean_docker.sh to run these shell command as above.
bash 复制代码
#!/bin/bash

# SET PATH
cd /your-parth/Docker

# 定义日志文件
LOGFILE="./cron.log"

# 记录时间和作者
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Delete Docker Images and Container Script executed" >> ${LOGFILE}

# 运行原先的脚本,并将输出写入日志
./delete_docker_images.sh /your-keyword/ >> ${LOGFILE} 2>&1
./clean_docker_containers.sh >> ${LOGFILE} 2>&1

echo "[$(date '+%Y-%m-%d %H:%M:%S')] End" >> ${LOGFILE}
echo "" >> ${LOGFILE}
  1. Set a cron job

4.1 crontab -e

bash 复制代码
# 第一颗星表示分钟(0-59)第二颗星表示小时(0-23)第三颗星表示一个月中的天(1-31)
# 第四颗星表示月份(1-12)第五颗星表示一周中的天(0-7,星期天可以是0或7)
# 每天8時定期清理 docker images by keyword & container
0 8 * * * /your-path/Docker/run_clean_docker.sh

4.2 cron.log

html 复制代码
[2024-11-28 08:00:01] Delete Docker Images and Container Script executed
No images found with keyword: /ccs/
No containers to clean.
[2024-11-28 08:00:01] End
相关推荐
极创信息2 分钟前
信创系统认证服务怎么做?从适配到验收全流程指南
java·大数据·运维·tomcat·健康医疗
Dontla8 分钟前
Kubernetes Liveness Probe存活探针 / Readiness Probe就绪探针介绍(Startup Probe启动探针)重启容器
云原生·容器·kubernetes
渣渣馬12 分钟前
rk3588s的firfly的linux的sdk版本
linux·运维·服务器
七夜zippoe21 分钟前
DolphinDB安装部署:单机版快速上手
docker·安装部署·dolphindb·单机版·web gui
格林威30 分钟前
工业相机 SDK 在 Docker 容器中的部署与权限配置(含 USB/GigE)
开发语言·人工智能·数码相机·计算机视觉·docker·容器·工业相机
快往胃里来42 分钟前
Dify保姆级教程:部署、智能体、工作流到后端API
阿里云·docker
相醉为友1 小时前
024 嵌入式Linux应用开发——文字显示与freetype的使用显示
linux·运维·驱动开发
七七powerful1 小时前
运维养龙虾--用Excalidraw Skill 手绘各种配图:从安装 Skill 到批量生成配图
运维
Hello World . .2 小时前
Linux驱动编程1:imxull上移植Linux系统
linux·运维·服务器
小夏子_riotous2 小时前
openstack的使用——5. Swift服务的基本使用
linux·运维·开发语言·分布式·云计算·openstack·swift