首页
/ Rundeck Docker 镜像部署与配置完全指南

Rundeck Docker 镜像部署与配置完全指南

2025-07-07 08:09:58作者:裴麒琰

什么是 Rundeck

Rundeck 是一个开源的操作自动化平台,它允许用户通过 Web 界面或 API 来定义和执行自动化任务。Rundeck 提供了作业调度、工作流编排、访问控制和审计日志等功能,是企业 IT 自动化的重要工具。

Docker 镜像版本说明

Rundeck 官方提供了多个版本的 Docker 镜像供用户选择:

  • SNAPSHOT:最新的主分支构建版本(不稳定)
  • 3.0.20:当前最新的稳定版本
  • 3.0.19 及更早版本:历史稳定版本

基础部署方法

持久化存储配置

为了确保数据在容器重启或升级后不丢失,建议使用命名卷来持久化存储数据:

docker run --name my-rundeck -v rundeck-data:/home/rundeck/server/data rundeck/rundeck

这条命令会创建一个名为 rundeck-data 的卷,用于存储 Rundeck 的所有数据。

安全配置

SSH 密钥管理

Rundeck 执行远程任务通常需要 SSH 密钥,可以通过以下方式提供:

docker run --name my-rundeck -v /path/to/ssh/keys:/home/rundeck/.ssh rundeck/rundeck

JVM 内存配置

通过 Docker 的内存限制参数控制 JVM 堆内存使用:

docker run -m 1024m rundeck/rundeck

JVM 默认会使用容器内存限制的 75% 作为堆内存上限,可通过 JVM_MAX_RAM_PERCENTAGE 环境变量调整。

关键配置详解

数据库配置

默认使用 H2 嵌入式数据库,生产环境建议配置外部数据库:

docker run -e RUNDECK_DATABASE_URL="jdbc:mysql://dbhost:3306/rundeck" \
           -e RUNDECK_DATABASE_DRIVER="com.mysql.jdbc.Driver" \
           -e RUNDECK_DATABASE_USERNAME="user" \
           -e RUNDECK_DATABASE_PASSWORD="password" \
           rundeck/rundeck

支持的数据库驱动包括:

  • MySQL:com.mysql.jdbc.Driver
  • MariaDB:org.mariadb.jdbc.Driver
  • PostgreSQL:org.postgresql.Driver

日志配置

默认日志输出到控制台,可通过以下配置改为文件日志:

docker run -e RUNDECK_LOGGING_STRATEGY=FILE rundeck/rundeck

日志级别可以通过 RUNDECK_LOGGING_LEVEL_* 系列变量调整:

docker run -e RUNDECK_LOGGING_LOGLEVEL_DEFAULT=debug \
           -e RUNDECK_LOGGING_LOGLEVEL_ROOT=debug \
           rundeck/rundeck

邮件服务配置

配置 SMTP 服务器以启用邮件通知功能:

docker run -e RUNDECK_MAIL_SMTP_HOST="smtp.example.com" \
           -e RUNDECK_MAIL_SMTP_PORT=587 \
           -e RUNDECK_MAIL_SMTP_USERNAME="user" \
           -e RUNDECK_MAIL_SMTP_PASSWORD="password" \
           -e RUNDECK_MAIL_FROM="noreply@example.com" \
           rundeck/rundeck

高级配置

用户认证

默认使用 realm.properties 文件认证,可以通过挂载自定义文件来管理用户:

docker run -v /path/to/realm.properties:/home/rundeck/server/config/realm.properties \
           rundeck/rundeck

也支持 JAAS 认证模块,如 LDAP 集成:

docker run -e RUNDECK_JAAS_MODULES_0=JettyCombinedLdapLoginModule \
           -e RUNDECK_JAAS_LDAP_PROVIDERURL="ldap://ldap.example.com:389" \
           -e RUNDECK_JAAS_LDAP_BINDUSER="cn=admin,dc=example,dc=com" \
           -e RUNDECK_JAAS_LDAP_BINDPASSWORD="password" \
           rundeck/rundeck

密钥存储加密

为密钥存储启用加密功能:

docker run -e RUNDECK_STORAGE_CONVERTER_1_CONFIG_PASSWORD=supersecret \
           -e RUNDECK_CONFIG_STORAGE_CONVERTER_1_CONFIG_PASSWORD=supersecret \
           rundeck/rundeck

插件管理

可以通过挂载 /home/rundeck/container-plugins/ 目录来添加自定义插件:

docker run -v /path/to/plugins:/home/rundeck/container-plugins \
           rundeck/rundeck

性能调优

线程池配置

调整 Quartz 线程池大小以提高并发性能:

docker run -e RUNDECK_QUARTZ_THREADPOOL_THREADCOUNT=20 \
           rundeck/rundeck

最佳实践

  1. 生产环境:避免使用 SNAPSHOT 版本,选择最新的稳定版本
  2. 数据备份:定期备份挂载的卷数据
  3. 资源限制:根据工作负载合理设置内存限制
  4. 监控:配置日志收集和监控系统
  5. 高可用:考虑使用集群部署提高可用性

通过以上配置,您可以在 Docker 环境中高效地部署和管理 Rundeck 自动化平台。根据实际需求调整配置参数,可以构建出适合不同场景的 Rundeck 解决方案。