
MariaDB是一款开源的关系型数据库管理系统(RDBMS),由MySQL原开发团队创建,旨在保持与MySQL的高度兼容性,同时提供更优的性能、安全性和功能扩展。MariaDB Docker镜像将MariaDB数据库封装为容器,简化了部署流程,支持快速搭建独立的数据库环境,适用于开发、测试及生产场景的数据存储与管理需求。
通过以下命令快速启动MariaDB容器:
bashdocker run -d \ --name mariadb \ -p 3306:3306 \ -e MARIADB_ROOT_PASSWORD=mysecretpassword \ -v mariadb-data:/var/lib/mysql \ mariadb:latest
参数说明:
-d:后台运行容器--name mariadb:指定容器名称-p 3306:3306:映射容器3306端口到主机(数据库默认端口)-e MARIADB_ROOT_PASSWORD:设置root用户密码(必填)-v mariadb-data:/var/lib/mysql:使用命名卷持久化数据(避免容器删除后数据丢失)MariaDB镜像支持通过环境变量自定义配置,常用变量如下:
| 环境变量 | 描述 | 示例值 |
|---|---|---|
MARIADB_ROOT_PASSWORD | 设置root用户密码(必填) | mysecretpassword |
MARIADB_DATABASE | 启动时自动创建的数据库名称 | mydb |
MARIADB_USER | 为新数据库创建的用户名称 | appuser |
MARIADB_PASSWORD | 新用户的密码 | apppass |
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD | 允许root用户无密码(仅开发环境) | yes |
MARIADB_ROOT_HOST | 允许root用户从指定主机登录 | %(允许所有主机) |
MARIADB_INITDB_SKIP_TZINFO | 跳过时区表初始化(加速启动) | 1 |
示例:创建带初始数据库和用户的容器
bashdocker run -d \ --name mariadb-app \ -p 3306:3306 \ -e MARIADB_ROOT_PASSWORD=rootpass \ -e MARIADB_DATABASE=mydb \ -e MARIADB_USER=appuser \ -e MARIADB_PASSWORD=apppass \ -v mariadb-data:/var/lib/mysql \ mariadb:latest
使用docker-compose.yml简化多容器应用中的数据库部署:
yamlversion: '3.8' services: mariadb: image: mariadb:latest container_name: mariadb restart: always # 容器退出时自动重启 ports: - "3306:3306" environment: MARIADB_ROOT_PASSWORD: rootpass MARIADB_DATABASE: mydb MARIADB_USER: appuser MARIADB_PASSWORD: apppass volumes: - mariadb-data:/var/lib/mysql # 数据持久化 - ./init-scripts:/docker-entrypoint-initdb.d # 初始化脚本目录(可选) networks: - app-network # 与应用共享网络 volumes: mariadb-data: # 命名卷,数据持久化 networks: app-network: driver: bridge
初始化脚本说明:
将SQL脚本(.sql、.sql.gz)或Shell脚本(.sh)放入./init-scripts目录,容器启动时会自动执行,用于初始化表结构、插入测试数据等。
为避免容器删除导致数据丢失,需通过以下方式持久化数据:
命名卷(推荐):如上述示例中使用-v mariadb-data:/var/lib/mysql,卷由Docker管理,安全性高。
主机目录挂载:将主机目录直接挂载到容器,适合需要直接访问数据文件的场景:
bashdocker run -d \ --name mariadb \ -v /path/on/host/mysql-data:/var/lib/mysql \ mariadb:latest
连接到容器内数据库:
bashdocker exec -it mariadb mysql -u root -p
从其他容器连接:通过容器名称或服务名(Docker Compose)访问,例如在应用容器中连接字符串为:
mysql://appuser:apppass@mariadb:3306/mydb
限制外部访问:生产环境建议不暴露3306端口到公网,通过Docker网络隔离,仅允许应用容器访问。
容器日志默认输出到标准输出,可通过Docker日志驱动配置存储位置:
bashdocker run -d \ --name mariadb \ --log-driver=json-file \ --log-opt max-size=10m \ --log-opt max-file=3 \ mariadb:latest
或在docker-compose.yml中配置:
yamlservices: mariadb: # ...其他配置 logging: driver: "json-file" options: max-size: "10m" max-file: "3"
MariaDB镜像提供多个标签,对应不同版本,可根据需求选择:
latest:最新稳定版11.4:特定主版本(如11.4.x系列)11.4.2:特定补丁版本11.4-focal:基于Ubuntu Focal的版本11.4-alpine:基于Alpine Linux的轻量版本(体积更小,适合资源受限环境)建议生产环境使用特定版本标签(如11.4.2),避免latest标签自动更新导致兼容性问题。
MARIADB_ROOT_PASSWORD,并使用强密码。MARIADB_ROOT_HOST限制仅允许特定IP或主机登录。docker exec mariadb mysqldump或mariabackup备份数据。appuser)访问数据库,避免权限过大。以下是 dpvduncan/mariadb 相关的常用 Docker 镜像,适用于 关系型数据库、MySQL 兼容、高性能 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务