Docker运维管理指南
大约 5 分钟Docker指南Docker运维管理
Docker运维管理指南
概述
Docker运维管理是确保容器化应用稳定运行、高效维护的重要环节。本指南将介绍Docker的日常运维操作、监控、备份恢复等关键内容。
1. Docker日常运维操作
1.1 容器生命周期管理
启动和停止容器
# 启动容器
docker start container_name
# 停止容器
docker stop container_name
# 重启容器
docker restart container_name
# 强制停止容器
docker kill container_name
容器状态查看
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 查看容器详细信息
docker inspect container_name
# 查看容器资源使用情况
docker stats container_name
1.2 镜像管理
镜像操作
# 查看本地镜像
docker images
# 删除镜像
docker rmi image_name
# 清理无用镜像
docker image prune
# 清理所有停止的容器、无用网络、无用镜像
docker system prune
# 查看镜像详细信息
docker inspect image_name
镜像导出和导入
# 导出镜像
docker save -o image.tar image_name
# 导入镜像
docker load -i image.tar
1.3 数据卷管理
# 创建数据卷
docker volume create volume_name
# 查看数据卷
docker volume ls
# 查看数据卷详细信息
docker volume inspect volume_name
# 删除数据卷
docker volume rm volume_name
# 清理无用数据卷
docker volume prune
1.4 网络管理
# 创建自定义网络
docker network create network_name
# 查看网络
docker network ls
# 查看网络详细信息
docker network inspect network_name
# 删除网络
docker network rm network_name
# 清理无用网络
docker network prune
2. Docker监控和日志管理
2.1 容器监控
使用docker stats监控
# 监控所有容器
docker stats
# 监控特定容器
docker stats container1 container2
# 监控并限制输出字段
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" container_name
使用cAdvisor监控
# 运行cAdvisor容器
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
gcr.io/cadvisor/cadvisor:latest
2.2 日志管理
查看容器日志
# 查看容器日志
docker logs container_name
# 实时查看日志
docker logs -f container_name
# 查看最近的日志条目
docker logs --tail 100 container_name
# 查看指定时间后的日志
docker logs --since "2023-01-01" container_name
配置日志驱动
# 使用syslog日志驱动
docker run --log-driver syslog --log-opt syslog-address=tcp://192.168.1.42:123 nginx
# 使用json-file驱动并限制日志大小
docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 nginx
3. Docker备份和恢复
3.1 容器备份
# 提交容器为镜像
docker commit container_name new_image_name
# 导出容器文件系统
docker export container_name > container.tar
3.2 数据卷备份
# 备份数据卷
docker run --rm -v volume_name:/data -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz -C /data .
# 恢复数据卷
docker run --rm -v new_volume_name:/data -v $(pwd):/backup alpine tar xzf /backup/backup.tar.gz -C /data
3.3 配置备份
# 备份Docker配置
tar czf docker-config-backup.tar.gz /etc/docker
# 备份Docker数据目录
tar czf docker-data-backup.tar.gz /var/lib/docker
4. Docker安全运维
4.1 容器安全配置
# 以只读模式运行容器
docker run --read-only nginx
# 限制容器能力
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
# 使用用户命名空间
docker run --user 1000:1000 nginx
# 启用SELinux
docker run --security-opt label=type:docker_t nginx
4.2 镜像安全扫描
# 使用Clair扫描镜像
clair-scanner --ip YOUR_LOCAL_IP image_name
# 使用Docker Bench Security检查
docker run --rm --net host --pid host --userns host --cap-add audit_control \
-e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
-v /var/lib:/var/lib \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib/systemd:/usr/lib/systemd \
-v /etc:/etc --label docker_bench_security \
docker/docker-bench-security
5. Docker集群管理
5.1 Docker Swarm模式
初始化Swarm集群
# 初始化Swarm管理节点
docker swarm init --advertise-addr MANAGER_IP
# 获取加入命令
docker swarm join-token worker
管理服务
# 创建服务
docker service create --name web --replicas 3 nginx
# 查看服务
docker service ls
# 查看服务详细信息
docker service inspect web
# 扩展服务
docker service scale web=5
# 更新服务
docker service update --image nginx:latest web
5.2 Docker Compose管理
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看服务日志
docker-compose logs
# 扩展服务
docker-compose up -d --scale web=3
6. Docker版本升级和维护
6.1 Docker版本升级
# 卸载旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装新版本
sudo yum install -y docker-ce docker-ce-cli containerd.io
6.2 Docker守护进程管理
# 重启Docker服务
sudo systemctl restart docker
# 查看Docker服务状态
sudo systemctl status docker
# 查看Docker服务日志
sudo journalctl -u docker.service
7. Docker故障排查
7.1 常见问题诊断
# 查看Docker系统信息
docker info
# 查看Docker版本
docker version
# 查看Docker磁盘使用情况
docker system df
# 查看Docker事件
docker events
7.2 容器连接和调试
# 进入容器
docker exec -it container_name /bin/bash
# 在容器中执行命令
docker exec container_name ps aux
# 复制文件到容器
docker cp local_file container_name:/path/to/file
# 从容器复制文件
docker cp container_name:/path/to/file local_file
8. Docker最佳运维实践
8.1 日常维护任务
- 定期清理无用资源
- 监控容器性能指标
- 备份重要数据和配置
- 更新安全补丁
8.2 监控告警设置
# 设置资源使用率告警
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}" | \
awk '$2+0 > 80 {print "High CPU usage on container " $1}'
8.3 自动化运维脚本
#!/bin/bash
# Docker健康检查脚本
# 检查Docker服务状态
if ! systemctl is-active --quiet docker; then
echo "Docker service is not running"
systemctl start docker
fi
# 检查容器运行状态
docker ps -q | xargs -r docker inspect --format='{{.State.Running}}' | grep -q false
if [ $? -eq 0 ]; then
echo "Some containers are not running"
fi
# 清理无用资源
docker system prune -f
9. Docker日志和审计
9.1 系统日志配置
在/etc/docker/daemon.json
中配置日志:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
9.2 审计日志
# 启用Docker审计
sudo auditctl -w /usr/bin/docker -p x -k docker_command
# 查看审计日志
sudo ausearch -k docker_command
总结
Docker运维管理涉及容器生命周期管理、监控、备份恢复、安全管理等多个方面。通过规范的运维流程和自动化工具,可以有效提高Docker环境的稳定性和可维护性。定期进行维护和监控,及时处理问题,是保障容器化应用稳定运行的关键。