本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本容器镜像包含适用于OpenShift和通用场景的MariaDB 10.2 SQL数据库服务器。用户可选择基于RHEL、CentOS或Fedora的镜像:RHEL镜像可在Red Hat Container Catalog获取,CentOS镜像在Docker Hub,Fedora镜像在Fedora Registry。生成的镜像可使用podman运行。
注意:本文档示例中使用
podman命令,所有此类命令均可替换为docker,参数保持不变。
--memory参数且未指定部分配置时,自动根据可用内存计算参数值。适用于需要容器化部署MariaDB 10.2的各类场景,包括:
以Red Hat Container Catalog的rhscl/mariadb-102-rhel7镜像为例,仅设置必填环境变量且不持久化数据:
docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mariadb-102-rhel7
上述命令创建名为mariadb_database的容器,运行MySQL服务,创建数据库db及用户user:pass,并将容器3306端口映射到主机。
如需数据持久化,添加-v /host/db/path:/var/lib/mysql/data参数(/host/db/path为主机目录):
docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 -v /host/db/path:/var/lib/mysql/data rhscl/mariadb-102-rhel7
mysql_install_db,设置必要的数据库用户和密码。mysqld将以PID 1运行。docker stop mariadb_database。通过-e VAR=VALUE设置以下环境变量:
MYSQL_USER:创建的MySQL用户名。MYSQL_PASSWORD:用户密码。MYSQL_DATABASE:数据库名称。MYSQL_ROOT_PASSWORD(可选):root用户密码,用于远程访问。MYSQL_LOWER_CASE_TABLE_NAMES(默认:0):控制表名存储和比较方式。MYSQL_MAX_CONNECTIONS(默认:151):最大并发客户端连接数。MYSQL_MAX_ALLOWED_PACKET(默认:200M):单个数据包或生成/中间字符串的最大大小。MYSQL_FT_MIN_WORD_LEN(默认:4):FULLTEXT索引包含的最小词长。MYSQL_FT_MAX_WORD_LEN(默认:20):FULLTEXT索引包含的最大词长。MYSQL_AIO(默认:1):控制innodb_use_native_aio设置,用于修复原生AIO问题。MYSQL_TABLE_OPEN_CACHE(默认:400):所有线程打开的表数量。MYSQL_KEY_BUFFER_SIZE(默认:32M或可用内存的10%):索引块缓冲区大小。MYSQL_SORT_BUFFER_SIZE(默认:256K):排序操作使用的缓冲区大小。MYSQL_READ_BUFFER_SIZE(默认:8M或可用内存的5%):顺序扫描使用的缓冲区大小。MYSQL_INNODB_BUFFER_POOL_SIZE(默认:32M或可用内存的50%):InnoDB缓存表和索引数据的缓冲池大小。MYSQL_INNODB_LOG_FILE_SIZE(默认:8M或可用内存的15%):每个日志文件的大小。MYSQL_INNODB_LOG_BUFFER_SIZE(默认:8M或可用内存的15%):InnoDB写入日志文件的缓冲区大小。MYSQL_DEFAULTS_FILE(默认:/etc/my.cnf):指定替代配置文件路径。MYSQL_BINLOG_FORMAT(默认:statement):binlog格式,支持row和statement。MYSQL_LOG_QUERIES_ENABLED(默认:0):设为1启用查询日志。通过-v /host:/container挂载以下目录:
/var/lib/mysql/data:MySQL数据目录,用于持久化数据。注意:挂载主机目录到容器时,需确保目录权限正确,且目录的所有者和组与容器内运行的用户UID或名称匹配。
当镜像以--memory参数运行且未指定部分参数时,其值将根据可用内存自动计算:
MYSQL_KEY_BUFFER_SIZE:默认10%的可用内存。MYSQL_READ_BUFFER_SIZE:默认5%的可用内存。MYSQL_INNODB_BUFFER_POOL_SIZE:默认50%的可用内存。MYSQL_INNODB_LOG_FILE_SIZE:默认15%的可用内存。MYSQL_INNODB_LOG_BUFFER_SIZE:默认15%的可用内存。MYSQL_ROOT_PASSWORD环境变量设置密码后,允许远程访问;本地连接仍无需密码。MYSQL_ROOT_PASSWORD并重启容器。数据库用户(MYSQL_USER)和root用户的密码仅支持通过修改环境变量MYSQL_PASSWORD和MYSQL_ROOT_PASSWORD更改。通过SQL语句或其他方式修改会导致环境变量值与实际密码不匹配,容器启动时将重置为环境变量值。
通过MYSQL_DEFAULTS_FILE环境变量指定替代配置文件路径,默认值为/etc/my.cnf。例如:
docker run -e MYSQL_DEFAULTS_FILE=/etc/mysql/my.cnf ...
可通过OpenShift的Source构建策略或独立的source-to-image(s2i)工具扩展镜像。以rhscl/mariadb-102-rhel7镜像(OpenShift中标签为mariadb:10.2)为例:
构建自定义镜像my-mariadb-rhel7,配置来自GitHub仓库:
oc new-app mariadb:10.2~[***] \ --name my-mariadb-rhel7 \ --context-dir=examples/extend-image \ --env MYSQL_OPERATIONS_USER=opuser \ --env MYSQL_OPERATIONS_PASSWORD=oppass \ --env MYSQL_DATABASE=opdb \ --env MYSQL_USER=user \ --env MYSQL_PASSWORD=pass
s2i build --context-dir=examples/extend-image [***] rhscl/mariadb-102-rhel7 my-mariadb-rhel7
扩展目录可包含以下子目录,文件将复制到容器的/opt/app-root/src目录,用户文件优先于默认文件:
mysql-cfg/:存放mysqld配置文件,启动时会运行envsubst以支持环境变量替换。mysql-pre-init/:存放*.sh脚本,在mysqld启动前执行。mysql-init/:存放*.sh脚本,在mysqld本地启动后执行,可使用${mysql_flags}连接数据库(如mysql $mysql_flags < dump.sql)。脚本中可使用以下变量:
$mysql_flags:连接本地mysqld的mysql工具参数。$MYSQL_RUNNING_AS_MASTER:容器以run-mysqld-master命令运行时定义。$MYSQL_RUNNING_AS_SLAVE:容器以run-mysqld-slave命令运行时定义。$MYSQL_DATADIR_FIRST_INIT:数据目录首次初始化时定义。通过扩展功能添加SSL证书和配置:
sslapp/mysql-certs/),存放证书文件(server-cert-selfsigned.pem、server-key.pem)。sslapp/mysql-cfg/ssl.cnf:[mysqld] ssl-key=${APP_DATA}/mysql-certs/server-key.pem ssl-cert=${APP_DATA}/mysql-certs/server-cert-selfsigned.pem
-v挂载目录或s2i构建新镜像。重要:升级前需备份所有数据。推荐通过
mysqldump导出数据,再导入新数据库;或启动新版本后立即运行mysql_upgrade(仅支持升级前一版本)。
通过MYSQL_DATADIR_ACTION变量控制数据目录升级行为,支持多个值(逗号分隔):
upgrade-warn(默认):检测到数据版本与当前版本不同时打印警告,仍启动容器;若mysql_upgrade_info文件不存在则创建,但不执行mysql_upgrade。upgrade-auto:数据来自前一版本时自动运行mysql_upgrade;来自更早/更新版本时打印警告。upgrade-force:无论数据版本,强制运行mysql_upgrade --force,可创建缺失的mysql_upgrade_info文件。optimize:运行mysqlcheck --optimize优化所有表。analyze:运行mysqlcheck --analyze分析所有表。disable:不执行数据版本相关操作。通过MYSQL_BINLOG_FORMAT环境变量设置binlog格式,支持row(行级)和statement(语句级,默认)。例如:
docker run -e MYSQL_BINLOG_FORMAT=row ...
当容器以run-mysqld-master命令运行时,binlog将按指定格式记录变更。
mysqld守护进程日志输出到标准输出,可通过以下命令查看容器日志:
docker logs <容器名称或ID>
镜像的Dockerfile及源码位于:[***]Dockerfile,RHEL7对应Dockerfile.rhel7,RHEL8对应Dockerfile.rhel8,Fedora对应Dockerfile.fedora。

免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429