Linux环境下Docker自动化运维的实现方法
Ansible是无Agent的自动化运维工具,通过Playbook定义任务,可实现Docker服务的批量安装、配置、启动/停止及镜像部署。其核心优势在于幂等性(重复执行不会导致配置冲突)和批量操作(支持多台主机同时管理)。
具体步骤包括:
ansible.cfg(关闭主机密钥检查)和inventory文件(定义托管节点,如[docker]组);docker.yml),内容涵盖Docker仓库添加、服务安装、daemon.json配置(如调整日志大小);ansible-playbook docker.yml -i inventory命令完成批量部署。Docker Compose是定义和运行多容器Docker应用的工具,通过docker-compose.yml文件(YAML格式)配置服务、网络、卷等,实现“一键启动/停止”多容器应用(如Web+数据库+缓存的组合)。
示例docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./app:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
执行docker-compose up -d即可启动所有服务,docker-compose down停止并删除资源。Docker Compose适合开发/测试环境或小型生产环境的多容器管理,简化了复杂应用的部署流程。
Watchtower是自动化监控Docker容器更新的工具,通过定期扫描容器使用的镜像,若发现新版本则自动拉取并重启容器(保留数据卷)。其特点是无侵入性(通过Docker Socket通信)和自动化(无需手动干预)。
安装方式:
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
默认情况下,Watchtower会监控所有运行中的容器,也可通过--interval参数调整扫描频率(如--interval 300表示每5分钟扫描一次)。适合需要保持容器版本最新的场景(如避免安全漏洞)。
Spug是轻量级无Agent自动化运维平台,整合了主机管理、批量执行、任务计划、Docker管理等功能,通过Web界面实现零命令行操作。其核心优势在于可视化(拖拽式Playbook构建)和易用性(适合中小企业或DevOps新手)。
部署步骤:
docker run -d -p 80:80 --restart=always --name spug registry.aliyuncs.com/openspug/spug;http://IP:80初始化管理员账号(admin/spug.dev);docker ps)、容器启停(如定时启动/停止)、镜像管理等功能。Portainer是开源的Docker管理GUI工具,支持容器、镜像、网络、卷的全生命周期管理,可通过Web界面完成大部分Docker操作(如创建容器、查看日志、调整资源限制)。其特点是跨平台(支持Docker、Swarm、Kubernetes)和易扩展(支持插件)。
部署方式:
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
访问http://IP:9000,通过“本地”模式连接Docker守护进程,即可进入图形化界面。Portainer适合个人开发者或需要可视化管理的团队,简化了Docker命令行操作。
对于需要定时运行的容器(如每天定时推送流媒体、定时备份数据),可使用Linux原生crontab工具,通过定时任务调用Docker命令实现。
示例:每天8:00启动iptv-hls容器,00:00停止:
crontab -e
添加以下内容:
0 8 * * * /usr/bin/docker start iptv-hls
0 0 * * * /usr/bin/docker stop iptv-hls
注意事项:
/usr/bin/docker绝对路径(避免环境变量问题);docker组,需将用户加入该组(sudo usermod -aG docker $USER)或使用sudo(不推荐,存在安全风险)。