当前位置: 首页 > news >正文

使用 Ansible 管理 Docker 容器:开关机、定时开关机及 VNC 控制

在实际运维中,我们常常需要对服务器进行 开机关机、定时开关机以及远程桌面控制(VNC)。如果你的受控节点是 Docker 容器,传统的 shutdown 命令在容器里无法使用,因为容器没有完整的 systemd 系统。

本文介绍一种 基于 Ansible + Docker 的简单实现方式,轻松实现容器开关机和管理。


1️⃣ 准备环境

1. 控制节点

  • 安装 Ansible
  • 安装 Docker,并确保能正常操作容器
  • 安装 Ansible Docker 集合:
ansible-galaxy collection install community.docker

2. 受控节点

  • 这里是 Docker 容器,不依赖 SSH 或 systemd
  • 容器名称示例:node1

2️⃣ 清单文件(inventory.ini)

[myhosts]
172.17.0.2[mydocker]
node1 ansible_host=127.0.0.1 ansible_port=2222 ansible_user=root ansible_password=201jq ansible_connection=ssh
  • [mydocker] 组用于 Docker 容器操作
  • 可以通过 ansible_hostansible_port 指定容器的 SSH 端口(可选,容器方式推荐直接操作 Docker)

3️⃣ 剧本文件(power_manage.yml)

- name: 服务器电源管理(Docker 容器方式)hosts: localhost  # 控制节点直接操作 Dockergather_facts: novars:# 可选参数:shutdown(停止容器)、startup(启动容器)、reboot(重启容器)power_action: "shutdown"  # 默认停止容器,可通过 --extra-vars 覆盖container_name: "node1"   # 受控容器名称tasks:- name: 停止 Docker 容器community.docker.docker_container:name: "{{ container_name }}"state: stoppedwhen: power_action == "shutdown"- name: 启动 Docker 容器community.docker.docker_container:name: "{{ container_name }}"state: startedwhen: power_action == "startup"- name: 重启 Docker 容器community.docker.docker_container:name: "{{ container_name }}"state: restartedwhen: power_action == "reboot"

🔹 模块说明

  • community.docker.docker_container:Ansible Docker 模块,用于管理容器状态

  • state 可选值:

    • started → 启动容器
    • stopped → 停止容器
    • restarted → 重启容器
  • when 控制条件,根据传入变量执行不同操作


4️⃣ 使用方式

4.1 停止容器(模拟关机)

ansible-playbook -i inventory.ini power_manage.yml --extra-vars "power_action=shutdown"

输出示例:

TASK [停止 Docker 容器] ************************************************
changed: [localhost]TASK [启动 Docker 容器] ************************************************
skipping: [localhost]TASK [重启 Docker 容器] ************************************************
skipping: [localhost]

✅ 表示容器已成功停止。


4.2 启动容器(模拟开机)

ansible-playbook -i inventory.ini power_manage.yml --extra-vars "power_action=startup"
  • 容器启动,输出会显示 changed: [localhost]

4.3 重启容器

ansible-playbook -i inventory.ini power_manage.yml --extra-vars "power_action=reboot"
  • 容器会重启,输出同样显示 changed: [localhost]
http://www.dtcms.com/a/389001.html

相关文章:

  • 【Spring AI】实现一个基于 Streamable HTTP 的 MCP Server
  • 云手机:概念、历史、内容与发展战略
  • linux服务器上安装oss对象存储(命令行工具使用oss)
  • 强化学习1.1 使用Gymnasium库
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(11):101-110语法 +(考え方15)
  • 运维分享:神卓 N600 如何实现 NAS 安全稳定访问
  • 系统集成项目管理工程师:第十四章 收尾过程组
  • 云手机通道具体是指什么?
  • C++ :实现多线程编程
  • 嵌入式科普(40)浅谈“功能安全“概念,深悟“功能安全“本质
  • 分布式系统理论-CAP和BASE
  • SaaS 安全的原则、挑战及其最佳实践指南
  • Flink on Native K8S源码解析
  • VMwarea安装
  • HarmonyOS之Swiper全解析
  • React18中性能优化方式
  • X133核心板--智能教育平板的芯动力​
  • 下载flink和flink cdc jar
  • 华为三层交换技术
  • 潮起之江:算力创新与赋能开启AI产业新征程
  • 华为链路聚合技术基础
  • 百度智能云车牌识别API官方配置指南
  • Git 拉Github的仓库却要求登录GitLab
  • 【Kafka】Kafka如何开启sasl认证?
  • 国产化Excel开发组件Spire.XLS教程:C# 轻松将 DataSet 导出到 Excel
  • NLP情绪因子解构鲍威尔“风险管理降息”信号,黄金价格在3707高位触发量化抛售潮
  • 【Python办公】Excel多Sheet拆分工具
  • Unity_程序集_.asmdef_引用命名域失败
  • FPGA采集AD7606转SRIO传输,基于Serial Rapidlo Gen2,提供6套工程源码和技术支持
  • Cloudcompare实现在模型上进行点云(下)采样