实用百科指南
霓虹主题四 · 更硬核的阅读氛围

运维自动化中的Docker操作实战指南

发布时间:2026-01-11 21:30:23 阅读:26 次

为什么用ref="/tag/2019/" style="color:#B2A89E;font-weight:bold;">Docker做运维自动

公司新项目上线,开发说“在我机器上是好的”,运维却要花半天配环境。这种场景太常见了。Docker 把应用和依赖打包成镜像,跑在任何服务器上都一个样,省去了反复配置的麻烦。

更关键的是,配合脚本或 CI/CD 工具,能自动拉取镜像、启动容器、健康检查,整个流程不用人工干预。半夜三点发布更新,也能睡得踏实。

常用Docker命令自动化封装

日常运维中,部署一个服务往往需要多个步骤:停止旧容器、删除、拉取新镜像、运行。把这些写成 shell 脚本,一键执行最省心。

#!/bin/bash
# deploy.sh - 自动化部署 myapp
docker stop myapp &> /dev/null || true
docker rm myapp &> /dev/null || true
docker pull registry.example.com/myapp:latest
docker run -d --name myapp -p 8080:8080 registry.example.com/myapp:latest

把这个脚本加入 Jenkins 或 GitLab CI 的部署阶段,代码一合并,自动推送到测试环境。

用 Docker Compose 管理多服务

一个项目通常不只一个服务。比如前端、后端、Redis、数据库。手动一个个启停太累。Docker Compose 用 YAML 文件定义所有服务,一条命令全拉起来。

version: '3'
services:
web:
image: myweb:latest
ports:
- "80:80"
depends_on:
- api
api:
image: myapi:latest
environment:
- REDIS_HOST=redis
redis:
image: redis:alpine

保存为 docker-compose.yml,执行 docker-compose up -d,整套环境就跑起来了。结合 cron 定时重启,或者用监控脚本检测状态自动重拉,稳定性提升一大截。

自动化清理节省资源

频繁构建镜像会产生大量无用的中间层和停止的容器,磁盘不知不觉就满了。写个定时任务定期清理:

#!/bin/bash
# 清理停止的容器
docker container prune -f
# 清理未使用的镜像
docker image prune -a -f
# 清理未使用的网络
docker network prune -f

加到 crontab 每周日凌晨执行一次:0 2 * * 0 /root/cleanup-docker.sh,服务器再也不会因为磁盘爆掉报警。

与配置管理工具集成

Ansible 可以远程批量操作 Docker。比如同时在 10 台机器上更新服务。

- name: Deploy app with Docker
hosts: webservers
tasks:
- name: Pull latest image
docker_image:
name: myapp
tag: latest
source: pull
- name: Run container
docker_container:
name: myapp
image: myapp:latest
ports:
- "8080:8080"
restart: yes

一条 ansible-playbook deploy.yml,集群同步完成。比一台台登录操作快得多,也避免人为失误。

运维自动化不是一步到位的事。从封装几个常用命令开始,慢慢加上监控、调度、回滚机制。Docker 让这些变得简单可行,而不是纸上谈兵。