Docker Compose 镜像检测脚本(支持自动扫描 + 手动输入 YAML)
在日常运维中经常会遇到这样一个问题docker-compose 文件里定义了很多镜像但本地是否已经存在不清楚如果一个个docker pull或docker images去对比会非常低效。因此我们可以写一个脚本自动解析docker-compose.yaml中的image:字段并检查本地是否已经存在。 功能说明这个脚本支持✔ 两种模式选择自动扫描当前目录 YAML 文件手动输入 YAML 文件路径例如/data/test.yaml✔ 自动解析 compose 文件提取所有image:镜像去重处理✔ 本地镜像检查判断是否已存在输出结果存在 / 缺失 脚本内容#!/bin/bashset-euopipefail# # 命令行参数优先# if[$#-ge1];thenYAML_PATH$1elseecho YAML 文件选择 echo1. 自动扫描当前目录 YAML 文件echo2. 手动输入 YAML 文件路径echoread-rp请选择 [1-2]: modecase$modein1)mapfile-tyaml_files(find.-maxdepth1\(-name*.yaml-o-name*.yml\)|sort)if[${#yaml_files[]}-eq0];thenecho❌ 当前目录未找到 YAML 文件exit1fiechoecho发现以下 YAML 文件echoforiin${!yaml_files[]};doecho$((i1)).${yaml_files[$i]}doneechoread-rp请选择 YAML 序号: numindex$((num-1))if[$index-lt0]||[$index-ge${#yaml_files[]}];thenecho❌ 序号无效exit1fiYAML_PATH${yaml_files[$index]};;2)read-rp请输入 YAML 文件路径 (例如 /data/test.yaml): YAML_PATH;;*)echo❌ 无效选择exit1;;esacfi# # 文件检查# if[!-f$YAML_PATH];thenecho❌ YAML 文件不存在:$YAML_PATHexit1fiechoecho 使用 YAML 文件:$YAML_PATHecho# # 镜像检测# dockercompose-f$YAML_PATHconfig|\awk/image:/ {print $2}|\sort-u|\whileread-rimage;doifdockerimage inspect$image/dev/null21;thenecho✅ 存在:$imageelseecho❌ 缺失:$imagefidone 使用方式方式1自动交互选择bashcheck.sh方式2直接指定 YAMLbashcheck.sh /data/test.yaml 输出示例 使用 YAML 文件: ./docker-compose.yaml ✅ 存在: nginx:1.25 ✅ 存在: redis:7 ❌ 缺失: mysql:8.0 优化建议如果用于生产环境可以继续增强支持自动docker pull缺失镜像输出 JSON 报告集成 CI/CDGitLab / Jenkins支持多 compose 文件批量扫描 总结这个脚本的核心价值是把 docker-compose 镜像依赖检查自动化避免部署前才发现镜像缺失的问题
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607954.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!