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)访问数据库,避免权限过大。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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