当前位置: 首页 > article >正文

Clean Docker Images and Container by Cron Job

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

#!/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

2. Create a delete_docker_images.sh to delete images with keyword.

#!/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

3. Create a run_clean_docker.sh to run these shell command as above.

#!/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}

4. Set a cron job

4.1 crontab -e


# 第一颗星表示分钟(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

[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


http://www.kler.cn/a/416333.html

相关文章:

  • 两个用来刷新Windows环境变量让会话即时生效的刷新脚本分享
  • 16.最接近的三数之和 python
  • 优维HAO案例:全球TOP15汽车零件供应商「IT运维自动化」创新工程
  • 组件A底部栏(position: fixed )事件使用$emit更新内容失败bug解决
  • 【数据湖仓】-- 阿里云 dataworks 和 AWS Glue 数据治理工具对比
  • 虚拟机ubuntu-20.04.6-live-server搭建OpenStack:Victoria(五:OpenStack环境准备-compute node)
  • C++设计模式(模板模式)
  • AOA定位算法,平面上的angle of arrive定位算法与MATLAB实现
  • 【c++篇】:解读Set和Map的封装原理--编程中的数据结构优化秘籍
  • “岗位复合化、技能层次化” 高职大数据技术专业人才培养实践
  • MySQL8.0 双密码机制:解决应用程序用户不停机修改密码问题
  • AWS账号提额
  • 11.26 深度学习-初始化
  • C语言学习 13(编程题)
  • vue element-ui的el-image 和 el-table冲突层级冲突问题问题preview-teleported
  • 使用LLaMA-Factory微调时的数据集选择
  • SRIO DRP动态速率配置说明(详细讲解)
  • 环形链表系列导学
  • Spring Boot开发——整合JPA配置多数据源
  • 华纳云:怎么通过宝塔面板访问php My Admin?