Docker在Debian上的自动化运维方案
在Debian上部署Docker前,需通过脚本自动化完成系统更新、依赖安装及Docker引擎部署,避免手动操作的重复性。示例脚本如下:
#!/bin/bash
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装必要依赖
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置Docker稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
# 更新包索引并安装Docker
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
# 启动Docker并设置开机自启
sudo systemctl start docker && sudo systemctl enable docker
# 验证安装
sudo docker run hello-world
此脚本覆盖了从系统准备到Docker安装的全流程,确保环境一致性。
对于多容器应用(如Web服务+数据库),使用Docker Compose通过YAML文件定义服务依赖与配置,实现一键启动、停止及重建。示例docker-compose.yml:
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./web_data:/usr/share/nginx/html
restart: always
db:
image: postgres:13
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
restart: always
volumes:
postgres_data:
通过docker-compose up -d命令即可自动创建并启动所有服务,简化了多容器管理复杂度。
结合GitLab CI、GitHub Actions等工具,实现代码提交后自动构建镜像、运行测试、推送镜像仓库并部署到生产环境。以GitLab CI为例,.gitlab-ci.yml配置示例:
stages:
- build
- deploy
build_job:
stage: build
script:
- docker build -t registry.gitlab.com/username/project:latest .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- docker push registry.gitlab.com/username/project:latest
only:
- main
deploy_job:
stage: deploy
script:
- ssh -o StrictHostKeyChecking=no user@production-server "bash -s" < deploy.sh
only:
- main
其中deploy.sh为生产服务器上的部署脚本,包含拉取最新镜像、停止旧容器、启动新容器等步骤,确保代码变更自动同步到生产环境。
使用Watchtower工具监控Docker Hub或私有仓库中的镜像更新,自动拉取最新镜像并重启对应容器,无需人工干预。安装与配置命令:
# 拉取并运行Watchtower(监控所有容器)
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
# 配置更新检查间隔(例如每30分钟)
docker run -d \
--name watchtower \
-e WATCHTOWER_POLL_INTERVAL=1800 \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
Watchtower会定期检查容器使用的镜像是否有新版本,若有则自动下载并重启容器,确保服务始终运行在最新版本。
通过Prometheus+Granafa组合实现容器性能监控,使用Fluentd集中管理容器日志,自动化收集、存储与分析。
fluentd,将容器日志发送到Elasticsearch或Syslog服务器,实现日志的集中存储与检索。