mariadb

library/mariadb

MariaDB Server 是一款从 MySQL 分叉而来的高性能开源关系型数据库,它继承了 MySQL 的核心架构与兼容性,同时凭借持续的技术革新和社区驱动的优化,在查询效率、并发处理及数据安全等方面实现了显著提升,广泛应用于企业级系统、Web服务平台及各类数据存储场景,成为全球开发者和组织青睐的开源数据库解决方案之一。

6.1千 次收藏下载次数: 0状态:Docker 官方镜像维护者:Docker 官方镜像仓库类型:镜像最近更新:11 天前
让 AI 帮你使用轩辕镜像?

如果你使用 DeepSeek元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AIDeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

下载命令
点击查看

MariaDB Docker 镜像使用指南

快速参考

维护者

由 [MariaDB 基金会] 、[MariaDB 公司] 维护,社区贡献见 [GitHub 仓库] 。

帮助渠道

  • [数据库管理员 Stack Exchange] (标签:docker+mariadb
  • [MariaDB 知识库] (可[直接提问] )
  • 更多帮助见知识库文章:[获取 MariaDB 帮助]

支持的标签及对应 Dockerfile 链接

以下标签按版本分组,对应 Dockerfile 源码链接:

  • 12.1.x 候选版本(RC)
    12.1.1-ubi10-rc12.1-ubi10-rc12.1.1-ubi-rc12.1-ubi-rc
    [Dockerfile]

  • 12.1.x 候选版本(基于 Ubuntu Noble)
    12.1.1-noble-rc12.1-noble-rc12.1.1-rc12.1-rc
    [Dockerfile]

  • 12.0.x 稳定版(基于 UBI)
    12.0.2-ubi1012.0-ubi1012-ubi1012.0.2-ubi12.0-ubi12-ubi
    [Dockerfile]

  • 12.0.x 稳定版(默认标签)
    12.0.2-noble12.0-noble12-noblenoble12.0.212.012latest
    [Dockerfile]

  • 11.8.x LTS 版(基于 UBI)
    11.8.3-ubi911.8-ubi911-ubi9lts-ubi911.8.3-ubi11.8-ubi11-ubilts-ubi
    [Dockerfile]

  • 11.8.x LTS 版(默认 LTS 标签)
    11.8.3-noble11.8-noble11-noblelts-noble11.8.311.811lts
    [Dockerfile]

  • 其他版本(11.4.x、10.11.x、10.6.x 等)
    标签及 Dockerfile 见 [MariaDB Docker 仓库] 。

更多快速参考

问题反馈

  • Jira:[MDEV 项目 Docker 组件]
  • GitHub:[mariadb-docker issues]

支持的架构

amd64arm64v8ppc64les390x(架构镜像见 [Docker Hub] )。

镜像详情

  • 元数据、传输大小等:[repo-info 仓库 mariadb 目录] (含[历史记录] )。

镜像更新

  • 官方镜像更新跟踪:[library/mariadb 标签]
  • 镜像定义文件:[library/mariadb] (含[历史记录] )。

本文档来源

[docker-library/docs mariadb 目录] (含[历史记录] )。

关于 MariaDB

MariaDB 是全球广泛使用的数据库服务器,由 MySQL 原开发团队打造,保证开源。知名用户包括***、星展银行、ServiceNow 等。其目标是与 MySQL 高度兼容,确保库二进制等效性及 API/命令完全匹配,同时持续开发新功能并优化性能。

![MariaDB 标志]

如何使用镜像

镜像标签说明:latest 为最新稳定版,lts 为长期支持版。

运行容器

基础配置

端口绑定

默认容器内数据库监听 3306 端口,可通过 -p 映射到主机:

console
$ docker run --name some-mariadb -p 3306:3306 mariadb:latest

最小化配置

启动容器需设置 root 用户密码,支持以下三种方式:

  1. 指定密码
    console
    $ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
    
  2. 允许空密码
    console
    $ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:latest
    
  3. 随机密码(日志中会输出自动生成的密码):
    console
    $ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:latest
    

使用 docker compose

示例 compose.yaml

yaml
# 用户/密码:root/example
services:
  db:
    image: docker.xuanyuan.run/mariadb
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: example

  adminer:  # 数据库管理工具
    image: docker.xuanyuan.run/adminer
    restart: always
    ports:
      - 8080:8080  # 访问 [] 管理数据库

启动:docker compose up,等待初始化完成后访问上述地址。

创建用户、密码及数据库

启动时指定普通用户、密码和数据库:

console
$ docker run --detach --name some-mariadb \
  --env MARIADB_USER=example-user \
  --env MARIADB_PASSWORD=my_cool_secret \
  --env MARIADB_DATABASE=example-database \
  --env MARIADB_ROOT_PASSWORD=my-secret-pw \
  mariadb:latest

网络配置

应用需与 MariaDB 在同一网络中通信:

console
# 创建网络
$ docker network create some-network 

# 启动 MariaDB(加入网络)
$ docker run --detach --network some-network --name some-mariadb \
  --env MARIADB_USER=example-user \
  --env MARIADB_PASSWORD=my_cool_secret \
  --env MARIADB_ROOT_PASSWORD=my-secret-pw \
  mariadb:latest

# 启动应用(同一网络,通过容器名访问 MariaDB)
$ docker run --detach --network some-network --name some-application \
  --env APP_DB_HOST=some-mariadb \
  --env APP_DB_USER=example-user \
  --env APP_DB_PASSWD=my_cool_secret \
  some-application

连接 MariaDB 命令行客户端

容器内客户端

在同一网络中启动临时容器,连接目标 MariaDB:

console
$ docker run -it --network some-network --rm mariadb \
  mariadb -h some-mariadb -u example-user -p

some-mariadb 为目标容器名,输入密码后进入 SQL 交互界面)。

远程连接

连接非 Docker 或远程实例:

console
$ docker run -it --rm mariadb \
  mariadb --host <服务器IP> --user example-user --password --database test

测试连接:输入 \s 查看服务器信息。

容器操作

进入容器 Shell

console
$ docker exec -it some-mariadb bash

备份(MariaDB-Backup)

使用与服务器版本匹配的容器执行备份工具:

console
$ docker run --volume /backup-volume:/backup --rm mariadb:10.6.15 \
  mariadb-backup --help  # 查看帮助

查看日志

console
$ docker logs some-mariadb

自定义配置

使用自定义配置文件

配置文件需以 .cnf 结尾,挂载到容器 /etc/mysql/conf.d(只读)。文件格式示例:

ini
[mariadb]
max_connections = 1000
innodb_buffer_pool_size = 512M

默认配置已包含 Ubuntu MariaDB 变量,及容器优化:host-cache-size=0(禁用主机缓存)、skip-name-resolve(禁用域名解析)。如需启用域名解析,可设置 disable-skip-name-resolve

查看最终配置:

console
$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm mariadb:latest \
  my_print_defaults --mysqld

无配置文件时传参

可直接通过命令行参数传递配置(覆盖默认值),例如修改端口:

console
$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d \
  mariadb:latest --port 3808

查看所有可用参数:

console
$ docker run -it --rm mariadb:latest --verbose --help

环境变量

首次启动且数据目录为空时,需设置以下必填环境变量之一(或其 _FILE 变体,从文件读取值):

  • MARIADB_ROOT_PASSWORD:设置 root 密码
  • MARIADB_ALLOW_EMPTY_ROOT_PASSWORD:允许空 root 密码(设为 1
  • MARIADB_RANDOM_ROOT_PASSWORD:生成随机 root 密码(日志中输出)
  • MARIADB_ROOT_PASSWORD_HASH:直接传入密码哈希

其他可选变量(如 MARIADB_USERMARIADB_DATABASE 等)及完整列表见 [MariaDB 知识库] 。

注意:若数据目录已存在数据库,除 MARIADB_AUTO_UPGRADE(触发 mariadb-upgrade)外,其他初始化变量均无效。

密钥文件(Secrets)

敏感信息可通过 _FILE 后缀从文件读取(如 Docker Secrets):

console
$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb-root -d \
  mariadb:latest

初始化数据库内容

首次启动时,容器会执行 /docker-entrypoint-initdb.d 目录下的 .sh.sql.sql.gz.sql.xz.sql.zst 文件(按字母顺序)。SQL 文件默认导入到 MARIADB_DATABASE 指定的数据库。

示例:挂载初始化脚本目录:

console
$ docker run --name some-mariadb -v /my/init-scripts:/docker-entrypoint-initdb.d -d mariadb:latest

注意事项

数据存储

推荐两种数据持久化方式:

1. 主机目录挂载(推荐)

  • 在主机创建目录(如 /my/own/datadir),挂载到容器 /var/lib/mysql
    console
    $ docker run --name some-mariadb \
      -v /my/own/datadir:/var/lib/mysql:Z \  # :Z 修复 SELinux 权限
      -e MARIADB_ROOT_PASSWORD=my-secret-pw \
      -d mariadb:latest
    
    优点:主机可直接访问数据文件;需确保目录权限正确。

2. Docker 命名卷

由 Docker 管理存储,无需关心主机路径:

console
$ docker volume create mariadb-data
$ docker run --name some-mariadb -v mariadb-data:/var/lib/mysql -d mariadb:latest

初始化完成前无连接

首次启动时,数据库初始化期间容器不接受连接。自动化工具(如 docker compose)需注意等待初始化完成。

健康检查

官方镜像未默认配置 HEALTHCHECK,可使用 healthcheck.sh 脚本自定义检查逻辑,详见 [MariaDB 知识库] 。

现有数据库使用

若数据目录已存在数据库(含 mysql 子目录),初始化变量(除 MARIADB_AUTO_UPGRADE)均不生效,数据库结构保持不变。

备份与恢复

详见 [MariaDB 知识库:容器备份与恢复] 。

密码重置

参考 [FAQ:如何重置密码] 。

安装插件

详见 [添加插件到 Docker 镜像] 。

相关镜像

  • [MariaDB MaxScale] (数据库代理)
  • [MariaDB ColumnStore] (列式存储引擎)

Compose 文件示例

更多示例见 [mariadb-docker 仓库 /examples 目录] 。

许可证

镜像中软件的许可信息见 [MariaDB 许可 FAQ] 。镜像可能包含其他软件(如 Bash),其许可需用户自行确认合规性。

更多相关 Docker 镜像与资源

以下是 mariadb 相关的常用 Docker 镜像,适用于 关系型数据库、MySQL 兼容、高性能 等不同场景:

mariadb 国内 Docker 镜像拉取说明

在国内网络环境下,直接使用 docker pull 访问 Docker Hub 官方仓库时,较常遇到连接超时、TLS 握手失败或 registry 响应缓慢等情况。这类问题多与跨境链路质量、运营商策略及客户端 DNS 解析有关,并非单个镜像本身异常。

轩辕镜像提供两种常用加速方式:一是使用公共加速域名 docker.xuanyuan.run 拉取(可参考 登录认证方式);二是在控制台配置 专属域名拉取,将拉取命令中的 registry 前缀替换为分配的专属域名,通常能提升成功率与稳定性。

mariadb 为例,加速拉取命令格式为 docker pull docker.xuanyuan.run/mariadb:<标签>,请将 <标签> 替换为具体版本。下方「镜像拉取方式」区块提供与本文一致的命令示例,可直接复制使用。

镜像拉取方式

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

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

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

DockerHub 原生拉取命令

docker pull mariadb:<标签>

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

专业版 · 高速稳定拉取镜像
50GB 仅 ¥7/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告