mariadb-galera

bitnami/mariadb-galera Docker Image

Bitnami安全镜像,用于部署高可用MariaDB Galera集群,具备安全加固特性。

25 次收藏下载次数: 0状态:社区镜像维护者:Bitnami Secure Images(VMware Tanzu)仓库类型:镜像最近更新:1 年前

Bitnami MariaDB Galera 镜像文档

镜像概述和主要用途

MariaDB Galera 是一个多主数据库集群解决方案,提供同步复制和高可用性。Bitnami MariaDB Galera 镜像是由 Bitnami 打包的容器化版本,旨在简化 MariaDB Galera 集群的部署和管理,适用于开发、测试及生产环境(注:生产环境建议使用 Bitnami Secure Images)。

https://mariadb.com/kb/en/library/galera-cluster/
商标说明:本软件列表由 Bitnami 打包,所提及的商标分属各自公司所有,使用这些商标并不意味着任何关联或背书。

核心功能和特性

  • 多主架构:支持多个主节点,任何节点均可读写,提高系统可用性和负载均衡能力
  • 同步复制:集群节点间数据实时同步,确保数据一致性
  • 自动故障转移:节点故障时自动检测并恢复,无需手动干预
  • 安全加固:遵循 Bitnami Secure Images 标准,采用最小化操作系统(Photon Linux),减少***面
  • 非 root 容器:以非特权用户运行,增强容器安全性
  • 灵活配置:通过环境变量自定义数据库参数、集群配置及访问控制
  • 数据持久化:支持卷挂载,确保容器重启后数据不丢失
  • 标准化部署:与 Bitnami 虚拟机、云镜像使用相同组件和配置方式,便于跨环境迁移

使用场景和适用范围

  • 高可用性数据库需求:需要避免单点故障的业务系统
  • 分布式数据同步:多区域部署时需保持数据实时一致的场景
  • 开发/测试环境:快速搭建 MariaDB Galera 集群进行功能验证和性能测试
  • 中小规模生产环境:需简化集群管理的应用(生产环境建议使用 Bitnami Secure Images,获取长期支持和安全更新)

详细使用方法和配置说明

快速启动(TL;DR)

console
docker run --name mariadb-galera \
  -e ALLOW_EMPTY_PASSWORD=yes \
  docker.xuanyuan.run/bitnami/mariadb-galera:latest

警告:以上快速启动仅适用于开发环境。生产环境中应修改默认凭证,并参考 配置 部分进行安全部署。

⚠️ 重要通知:Bitnami 镜像目录即将变更

自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,通过新的 https://news.broadcom.com/app-dev/broadcom-introduces-bitnami-secure-images-for-production-ready-containerized-applications 提供精选的安全加固镜像:

  • 首次向社区用户开放流行容器镜像的安全优化版本
  • Bitnami 将逐步弃用免费层中非加固的 Debian 基础镜像,并从公共目录中移除非最新标签。社区用户将只能访问数量减少的加固镜像,且仅发布 "latest" 标签,适用于开发目的
  • 2025 年 8 月 28 日起,两周内所有现有容器镜像(包括旧版本标签,如 2.50.0、10.6)将从公共目录(docker.io/bitnami)迁移至 "Bitnami Legacy" 仓库(docker.io/bitnamilegacy),且不再接收更新
  • 对于生产工作负载和长期支持,建议采用 Bitnami Secure Images,包含加固容器、更小***面、CVE 透明度(通过 VEX/KEV)、SBOM 及企业支持

这些变更旨在通过推广软件供应链完整性最佳实践和最新部署,提升所有 Bitnami 用户的安全态势。更多详情参见 https://github.com/bitnami/containers/issues/83267。

为什么使用 Bitnami Secure Images

  • 安全加固与企业就绪:Bitnami Secure Images 和 Helm 图表旨在使开源软件更安全、更适合企业环境
  • 漏洞透明管理:通过行业标准漏洞可利用性交换(VEX)、KEV 和 EPSS 评分,更快分类安全漏洞并透明呈现 CVE 风险
  • 最小化操作系统:基于 Photon Linux 构建,减少***面的同时通过标准包格式保持可扩展性
  • 持续更新:上游补丁发布后数小时内更新镜像,确保安全性和合规性
  • 跨格式一致性:容器、虚拟机和云镜像使用相同组件和配置方式,便于根据项目需求切换格式
  • 安全元数据:加固镜像附带签名证明(Notation)、SBOM、病毒扫描报告等 SLSA-3 合规元数据

在 Kubernetes 中部署

使用 Helm Chart 是在 Kubernetes 上部署 Bitnami 应用的最简单方式。详见 https://github.com/bitnami/charts/tree/master/bitnami/mariadb-galera。

为什么使用非 root 容器

非 root 容器镜像增加了额外安全层,通常推荐用于生产环境。但由于以非 root 用户运行,特权操作通常受限。更多信息参见 https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-work-with-non-root-containers-index.html。

支持的标签及 Dockerfile 链接

注意:Debian 9 和 Oracle Linux 7 基础镜像已弃用,Bitnami 不再发布基于这些系统的新 Docker 镜像。

Bitnami 标签策略及滚动标签与固定标签的区别详见 https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html。各标签对应关系可查看分支文件夹中的 tags-info.yaml 文件(如 bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml)。

可通过关注 https://github.com/bitnami/containers 获取项目更新。

获取镜像

推荐从 https://hub.docker.com/r/bitnami/mariadb-galera 拉取预构建镜像:

console
docker pull docker.xuanyuan.run/bitnami/mariadb-galera:latest

如需指定版本,可拉取带版本标签的镜像。https://hub.docker.com/r/bitnami/mariadb-galera/tags/ 参见 Docker Hub。

console
docker pull docker.xuanyuan.run/bitnami/mariadb-galera:[TAG]

也可手动构建镜像:

console
git clone https://github.com/bitnami/containers.git
cd bitnami/APP/VERSION/OPERATING-SYSTEM  # 替换 APP、VERSION、OPERATING-SYSTEM 为实际值
docker build -t bitnami/APP:latest .

数据持久化

若删除容器,所有数据将丢失。为避免数据丢失,需挂载持久化卷至 /bitnami/mariadb 路径。挂载空目录时,首次运行会自动初始化数据。

Docker 命令行

console
docker run \
  -e ALLOW_EMPTY_PASSWORD=yes \
  -v /path/to/mariadb-persistence:/bitnami/mariadb \
  docker.xuanyuan.run/bitnami/mariadb-galera:latest

Docker Compose

修改仓库中的 https://github.com/bitnami/containers/blob/main/bitnami/mariadb-galera/docker-compose.yml:

yaml
services:
  mariadb:
  ...
    volumes:
      - /path/to/mariadb-persistence:/bitnami/mariadb
  ...

连接其他容器

通过 https://docs.docker.com/engine/userguide/networking/,容器内的 MariaDB 服务可被其他应用容器访问,同一网络中的容器可通过容器名作为主机名通信。

使用命令行

步骤 1:创建网络

console
docker network create app-tier --driver bridge

步骤 2:启动 MariaDB Galera 服务

console
docker run -d --name mariadb-galera \
  -e ALLOW_EMPTY_PASSWORD=yes \
  --network app-tier \
  docker.xuanyuan.run/bitnami/mariadb-galera:latest

步骤 3:启动客户端容器

console
docker run -it --rm \
  --network app-tier \
  docker.xuanyuan.run/bitnami/mariadb-galera:latest mysql -h mariadb-galera -u root

使用 Docker Compose

以下示例定义 app-tier 桥接网络,假设应用服务名为 myapp:

yaml
version: '2'

networks:
  app-tier:
    driver: bridge

services:
  mariadb-galera:
    image: docker.xuanyuan.run/bitnami/mariadb-galera:latest
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    networks:
      - app-tier
  myapp:
    image: docker.xuanyuan.run/YOUR_APPLICATION_IMAGE  # 替换为实际应用镜像
    networks:
      - app-tier

重要:

  1. 需将 YOUR_APPLICATION_IMAGE 替换为实际应用镜像
  2. 应用容器中使用主机名 mariadb-galera 连接数据库

启动容器:

console
docker-compose up -d

配置说明

环境变量

可自定义环境变量

变量名描述默认值
ALLOW_EMPTY_PASSWORD允许空密码访问 MariaDB Galerano
MARIADB_AUTHENTICATION_PLUGIN首次初始化时配置的认证插件nil
MARIADB_ROOT_USER数据库 root 用户root
MARIADB_ROOT_PASSWORDroot 用户密码nil
MARIADB_USER首次初始化时创建的数据库用户nil
MARIADB_PASSWORD自定义数据库用户密码nil
MARIADB_DATABASE首次初始化时创建的数据库nil
MARIADB_MASTER_HOST主节点地址nil
MARIADB_MASTER_PORT_NUMBER主节点端口3306
MARIADB_MASTER_ROOT_USER主节点 root 用户root
MARIADB_MASTER_ROOT_PASSWORD主节点 root 用户密码nil
MARIADB_MASTER_DELAY复制延迟(秒)0
MARIADB_REPLICATION_USER复制用户monitor
MARIADB_REPLICATION_PASSWORD复制用户密码monitor
MARIADB_PORT_NUMBER数据库服务端口nil
MARIADB_REPLICATION_MODE复制模式nil
MARIADB_REPLICATION_SLAVE_DUMP是否从主节点 dump 数据并更新从节点false
MARIADB_EXTRA_FLAGS启动数据库时附加的参数nil
MARIADB_INIT_SLEEP_TIME初始化配置操作等待睡眠时间(秒)nil
MARIADB_CHARACTER_SET字符集nil
MARIADB_COLLATE排序规则nil
MARIADB_BIND_ADDRESS绑定地址nil
MARIADB_SQL_MODE启用的 SQL 模式nil
MARIADB_UPGRADE升级选项AUTO
MARIADB_SKIP_TEST_DB是否跳过创建 test 数据库no
MARIADB_CLIENT_ENABLE_SSL是否强制客户端 SSL 连接no
MARIADB_CLIENT_SSL_CA_FILE客户端 SSL CA 证书路径nil
MARIADB_CLIENT_SSL_CERT_FILE客户端 SSL 证书路径nil
MARIADB_CLIENT_SSL_KEY_FILE客户端 SSL 密钥路径nil
MARIADB_CLIENT_EXTRA_FLAGSmysql 客户端附加参数(用于依赖 CLI 的应用)no
MARIADB_STARTUP_WAIT_RETRIES数据库启动等待重试次数300
MARIADB_STARTUP_WAIT_SLEEP_TIME重试间隔(秒)2
MARIADB_ENABLE_SLOW_QUERY是否启用慢查询日志0
MARIADB_LONG_QUERY_TIME慢查询阈值(秒)10.0
MARIADB_GALERA_DEFAULT_NODE_NAME节点默认逻辑名称nil
MARIADB_GALERA_DEFAULT_NODE_ADDRESS节点默认报告地址nil
MARIADB_GALERA_DEFAULT_MARIABACKUP_PASSWORDmariabackup 工具默认密码(用于 SST)nil
MARIADB_GALERA_CONF_DIR配置目录/opt/bitnami/mariadb/conf
MARIADB_GALERA_MOUNTED_CONF_DIR自定义配置覆盖目录/bitnami/conf
MARIADB_GALERA_FORCE_SAFETOBOOTSTRAP是否强制引导(即使节点标记为不安全)nil
MARIADB_GALERA_CLUSTER_BOOTSTRAP是否作为集群引导节点nil
MARIADB_GALERA_CLUSTER_ADDRESS集群地址nil
MARIADB_GALERA_CLUSTER_NAME集群名称$DB_GALERA_DEFAULT_CLUSTER_NAME
MARIADB_GALERA_NODE_NAME节点逻辑名称(默认主机名)nil
MARIADB_GALERA_NODE_ADDRESS节点报告地址(默认 IP)nil
MARIADB_GALERA_SST_METHOD状态快照传输(SST)方法$DB_GALERA_DEFAULT_SST_METHOD
MARIADB_GALERA_MARIABACKUP_USERmariabackup 工具用户(用于 SST)$DB_GALERA_DEFAULT_MARIABACKUP_USER
MARIADB_GALERA_MARIABACKUP_PASSWORDmariabackup 工具密码(用于 SST)$DB_GALERA_DEFAULT_MARIABACKUP_PASSWORD
MARIADB_ENABLE_LDAP是否启用 LDAP 认证no
MARIADB_ENABLE_TLS是否启用 SSL/TLSno
MARIADB_TLS_CERT_FILESSL/TLS 证书路径nil
MARIADB_TLS_KEY_FILESSL/TLS 密钥路径nil
MARIADB_TLS_CA_FILESSL/TLS CA 证书路径nil

只读环境变量

变量名描述值
DB_FLAVOR数据库类型(有效值:mariadb 或 mysql)mariadb
DB_BASE_DIR基础目录${BITNAMI_ROOT_DIR}/mariadb
DB_VOLUME_DIR持久化文件目录${BITNAMI_VOLUME_DIR}/mariadb
DB_DATA_DIR数据文件目录${DB_VOLUME_DIR}/data
DB_BIN_DIR可执行文件目录${DB_BASE_DIR}/bin
DB_SBIN_DIR服务二进制文件目录${DB_BASE_DIR}/sbin
DB_CONF_DIR配置目录${DB_BASE_DIR}/conf
DB_DEFAULT_CONF_DIR默认配置目录${DB_BASE_DIR}/conf.default
DB_LOGS_DIR日志目录${DB_BASE_DIR}/logs
DB_TMP_DIR临时文件目录${DB_BASE_DIR}/tmp
DB_CONF_FILE主

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 mariadb-galera 镜像标签

docker pull docker.xuanyuan.run/bitnami/mariadb-galera:<标签>

DockerHub 原生拉取命令

docker pull bitnami/mariadb-galera:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告