MariaDB 是最流行的数据库服务器之一,由MySQL的原始开发人员创建。LinuxServer.io团队提供的此容器镜像旨在提供一个简单、安全且易于配置的MariaDB数据库服务部署方案。
LinuxServer.io团队提供的容器具有以下特点:
该镜像利用Docker清单实现多平台支持。只需拉取 lscr.io/linuxserver/mariadb:latest 即可获取适合您架构的正确镜像,也可以通过标签拉取特定架构的镜像。
支持的架构:
| 架构 | 可用 | 标签 |
|---|---|---|
| x86-64 | ✅ | amd64-<version tag> |
| arm64 | ✅ | arm64v8-<version tag> |
适用于需要在Docker环境中快速部署可靠的MariaDB数据库服务的场景,包括:
根据上游行为,通过localhost(docker exec)访问的root用户不再需要密码。如果在初始启动时未设置远程访问的root密码,请按照容器日志中的说明操作。
注意:容器设置初始数据库后,更改任何MYSQL_变量都不会生效,请使用mysqladmin工具或命令行进行更改。
注意:如果要使用(MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD),这三个变量都需要设置,不能只选择其中几个。
Unraid用户建议在设置后编辑模板/webui,并删除对此变量的引用。
配置更改可在 /config/custom.cnf 中进行(需重启容器生效),数据库文件位于 /config/databases,日志位于 /config/log/mysql。
MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD、REMOTE_SQL 环境变量的值可以通过以下文件设置:
path/config/env
格式如下:
envMYSQL_ROOT_PASSWORD="ROOT_ACCESS_PASSWORD" MYSQL_DATABASE="USER_DB_NAME" MYSQL_USER="MYSQL_USER" MYSQL_PASSWORD="DATABASE_PASSWORD" REMOTE_SQL="[***]"
这些设置可以与Docker环境变量混合使用,但文件中的设置始终优先。
支持在初始化时一次性运行自定义SQL文件。为此,将 *.sql 文件放在:
path/config/initdb.d/
这与设置 REMOTE_SQL 环境变量具有相同效果。SQL文件仅在容器首次启动和设置时运行。
如果用户数据库处于不健康状态(有时由升级失败引起),可以通过运行以下命令修复:
shellmariadb-check -c -A # 检查所有数据库错误 mariadb-check -r -A # 修复所有数据库 mariadb-check -a -A # 分析所有数据库 mariadb-check -o -A # 优化所有数据库
运行上述命令后,可能需要再次运行升级命令。
当容器初始化时,如果设置了 MYSQL_ROOT_PASSWORD,将运行升级检查。如果需要升级,日志将指示需要停止所有访问此容器中数据库的服务,然后运行命令:
shellmariadb-upgrade
此镜像可以在只读容器文件系统中运行。有关详细信息,请阅读文档。
/tmp 必须挂载到tmpfs此镜像可以使用非root用户运行。有关详细信息,请阅读文档。
以下是使用Docker Compose或Docker CLI创建容器的方法。
yaml--- services: mariadb: image: lscr.io/linuxserver/mariadb:latest container_name: mariadb environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD - MYSQL_DATABASE=USER_DB_NAME #可选 - MYSQL_USER=MYSQL_USER #可选 - MYSQL_PASSWORD=DATABASE_PASSWORD #可选 - REMOTE_SQL=[***] #可选 volumes: - /path/to/mariadb/config:/config ports: - 3306:3306 restart: unless-stopped
bashdocker run -d \ --name=mariadb \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \ -e MYSQL_DATABASE=USER_DB_NAME `#可选` \ -e MYSQL_USER=MYSQL_USER `#可选` \ -e MYSQL_PASSWORD=DATABASE_PASSWORD `#可选` \ -e REMOTE_SQL=[***] `#可选` \ -p 3306:3306 \ -v /path/to/mariadb/config:/config \ --restart unless-stopped \ lscr.io/linuxserver/mariadb:latest
容器通过运行时传递的参数进行配置。这些参数用冒号分隔,表示 <外部>:<内部>。例如,-p 8080:80 会将容器内的80端口暴露到主机的8080端口。
| 参数 | 功能 |
|---|---|
-p 3306:3306 | MariaDB监听端口 |
| 参数 | 功能 |
|---|---|
-e PUID=1000 | 用户ID - 详见下文说明 |
-e PGID=1000 | 组ID - 详见下文说明 |
-e TZ=Etc/UTC | 指定时区,详见时区列表 |
-e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD | 设置安装时的root密码(至少4个字符,非字母数字密码必须正确转义)。(仅首次运行有效) |
-e MYSQL_DATABASE=USER_DB_NAME | 指定要创建的数据库名称。(仅首次运行有效) |
-e MYSQL_USER=MYSQL_USER | 此用户将对MYSQL_DATABASE指定的数据库拥有超级用户访问权限(此处不要使用root)。(仅首次运行有效) |
-e MYSQL_PASSWORD=DATABASE_PASSWORD | 为MYSQL_USER设置密码(至少4个字符,非字母数字密码必须正确转义)。(仅首次运行有效) |
-e REMOTE_SQL=[***] | 设置从http/https端点获取sql文件(逗号分隔的数组) |
| 参数 | 功能 |
|---|---|
-v /config | 持久化配置文件 |
| 参数 | 功能 |
|---|---|
--read-only=true | 以只读文件系统运行容器。请阅读文档 |
--user=1000:1000 | 以非root用户运行容器。请阅读文档 |
您可以使用特殊前缀 FILE__ 从文件中设置任何环境变量。
例如:
bash-e FILE__MYVAR=/run/secrets/mysecretvariable
将根据 /run/secrets/mysecretvariable 文件的内容设置环境变量 MYVAR。
对于所有镜像,我们提供了使用可选的 -e UMASK=022 设置来覆盖容器内启动的服务的默认umask设置的能力。请记住,umask不是chmod,它基于其值减去权限而不是添加权限。在请求支持之前,请先了解umask。
使用卷(-v 标志)时,主机操作系统和服容器之间可能会出现权限问题。我们通过允许您指定用户 PUID 和组 PGID 来避免此问题。
确保主机上的任何卷目录都由您指定相同的用户拥有,这样任何权限问题都会神奇地消失!
在这个例子中 PUID=1000 和 PGID=1000,要找到您的PUID和PGID,请使用 id your_user 命令:
bashid your_user
示例输出:
textuid=1000(your_user) gid=xxx(your_user) groups=1000(your_user)
我们发布各种Docker Mod以启用容器内的附加功能。可用于此镜像的Mod列表以及可应用于我们任何镜像的通用Mod可通过上方的动态徽章访问。
容器运行时的Shell访问:
bashdocker exec -it mariadb /bin/bash
实时监控容器日志:
bashdocker logs -f mariadb
容器版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' mariadb
镜像版本号:
bashdocker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/mariadb:latest
我们的大多数镜像是静态的、版本化的,需要更新镜像并重新创建容器来更新内部的应用程序。除了一些例外情况(在相关的readme.md中注明)外,我们不建议或支持在容器内更新应用程序,请咨询上面的应用设置部分,了解是否推荐对镜像进行更新。
以下是更新容器的说明:
更新镜像:
所有镜像:
bashdocker-compose pull
指定镜像:
bashdocker-compose pull mariadb
更新容器:
所有容器:
bashdocker-compose up -d
指定容器:
bashdocker-compose up -d mariadb
您还可以删除旧的悬空镜像:
bashdocker image prune
更新镜像:
bashdocker pull lscr.io/linuxserver/mariadb:latest
停止运行中的容器:
bashdocker stop mariadb
删除容器:
bashdocker rm mariadb
使用上述相同的docker run参数重新创建新容器(如果正确映射到主机文件夹,您的/config文件夹和设置将被保留)
您还可以删除旧的悬空镜像:
bashdocker image prune
我们推荐使用Diun进行更新通知提醒。我们不推荐或支持其他自动无人值守更新容器的工具。
如果您想对这些镜像进行本地修改以用于开发目的或自定义逻辑:
bashgit clone [***] cd docker-mariadb docker build \ --no-cache \ --pull \ -t lscr.io/linuxserver/mariadb:latest .
可以使用lscr.io/linuxserver/qemu-static在x86_64硬件上构建ARM变体,反之亦然:
bashdocker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
注册后,您可以使用-f Dockerfile.aarch64定义要使用Dockerfile。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429