shell脚本自动化docker命令的核心是将重复操作固化为可复用、可参数化的命令序列,包括封装高频操作、支持位置变量、集成错误处理与日志、以及通过环境变量驱动配置。
用 shell 脚本自动化执行 docker 常用命令,核心是把重复操作固化为可复用、可参数化的命令序列。不需要写复杂程序,几行脚本能省下大量手动输入时间。
快速封装高频操作
把最常敲的命令组合写成函数或独立脚本,例如清理环境:
-
一键停删所有容器:
docker stop $(docker ps -q) && docker rm $(docker ps -aq) -
清理悬空镜像 + 未使用数据:
docker image prune -f && docker system prune -f - 把这些串起来,保存为
clean-docker.sh,加上执行权限即可运行
支持参数的灵活脚本
用位置变量让脚本能适配不同场景。比如启动指定镜像的容器:
- 脚本开头加
#!/bin/bash,第一行读取参数:IMAGE=${1:-nginx}(默认用 nginx) - 再加端口映射逻辑:
PORT=${2:-8080},然后执行docker run -d -p $PORT:80 --name demo-$IMAGE $IMAGE - 调用时写
./run-demo.sh redis 6379就自动启 Redis 并映射到 6379
集成错误处理和日志
生产级脚本不能只图快,要稳:
- 用
set -e让脚本遇到任意命令失败就退出,避免误操作继续执行 - 加
echo "[INFO] Starting container..."明确提示当前步骤 - 关键命令后加判断,如
docker ps | grep -q demo-redis || { echo "启动失败"; exit 1; }
环境变量驱动配置
避免硬编码,用 export 或 .env 文件统一管理配置:
- 新建
.env:DB_IMAGE=postgres:15、DB_PORT=5432 - 脚本中用
source .env加载,再执行docker run -d -e POSTGRES_PASSWORD=123 -p $DB_PORT:5432 --name pg $DB_IMAGE - 不同环境只需换一个
.env,脚本本身不用改











