本容器镜像包含MariaDB 10.0 SQL数据库服务器,适用于OpenShift和一般用途。用户可选择基于RHEL或CentOS的镜像:
registry.access.redhat.com/rhscl/mariadb-100-rhel7centos/mariadb-100-centos7该镜像提供MariaDB mysqld守护进程和客户端应用的容器化打包。mysqld服务器守护进程接受客户端连接,并代表客户端提供对MySQL数据库内容的访问。更多关于MariaDB项目的信息可访问***网站。
以下示例使用Red Hat Container Catalog的rhscl/mariadb-100-rhel7镜像。若仅设置必填环境变量且不持久化数据,执行:
bashdocker run -d --name mariadb_database \ -e MYSQL_USER=user \ -e MYSQL_PASSWORD=pass \ -e MYSQL_DATABASE=db \ -p 3306:3306 \ rhscl/mariadb-100-rhel7
此命令将创建名为mariadb_database的容器,运行MariaDB服务,包含数据库db及用户user(密码pass),并将容器3306端口映射至主机。
如需数据持久化,添加-v /host/db/path:/var/lib/mysql/data参数(/host/db/path为主机目录):
bashdocker run -d --name mariadb_database \ -e MYSQL_USER=user \ -e MYSQL_PASSWORD=pass \ -e MYSQL_DATABASE=db \ -v /host/db/path:/var/lib/mysql/data \ -p 3306:3306 \ rhscl/mariadb-100-rhel7
注意:挂载主机目录时,需确保目录权限正确,且所有者/组与容器内运行用户的UID或名称匹配。
通过-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:FULLTEXT索引最小词长(默认4)MYSQL_FT_MAX_WORD_LEN:FULLTEXT索引最大词长(默认20)MYSQL_AIO:控制innodb_use_native_aio设置(默认1)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:InnoDB缓冲池大小(默认32M或可用内存的50%)MYSQL_INNODB_LOG_FILE_SIZE:日志文件大小(默认8M或可用内存的15%)MYSQL_INNODB_LOG_BUFFER_SIZE:InnoDB日志缓冲区大小(默认8M或可用内存的15%)MYSQL_DEFAULTS_FILE:替代配置文件路径(默认/etc/my.cnf)MYSQL_BINLOG_FORMAT:二进制日志格式(默认statement,支持row和statement)MYSQL_LOG_QUERIES_ENABLED:启用查询日志(默认0,设为1启用)通过-v /host:/container参数挂载以下路径:
/var/lib/mysql/data:MySQL数据目录,用于数据持久化当容器运行时设置--memory参数且未手动指定部分性能参数,其值将基于可用内存自动计算:
MYSQL_KEY_BUFFER_SIZE:默认10%可用内存(key_buffer_size)MYSQL_READ_BUFFER_SIZE:默认5%可用内存(read_buffer_size)MYSQL_INNODB_BUFFER_POOL_SIZE:默认50%可用内存(innodb_buffer_pool_size)MYSQL_INNODB_LOG_FILE_SIZE:默认15%可用内存(innodb_log_file_size)MYSQL_INNODB_LOG_BUFFER_SIZE:默认15%可用内存(innodb_log_buffer_size)默认情况下,root用户无密码,仅允许本地连接。通过设置MYSQL_ROOT_PASSWORD环境变量可设置root密码,允许远程连接(本地连接仍无需密码)。若需禁用远程root访问,清除MYSQL_ROOT_PASSWORD并重启容器即可。
数据库用户(MYSQL_USER)和root用户的密码仅支持通过环境变量MYSQL_PASSWORD和MYSQL_ROOT_PASSWORD更改。通过SQL语句或其他方式修改密码会导致环境变量值与实际密码不匹配,容器启动时将自动重置为环境变量中的值。
默认配置文件路径为/etc/my.cnf,可通过MYSQL_DEFAULTS_FILE环境变量指定替代配置文件,例如:MYSQL_DEFAULTS_FILE=/etc/mysql/my.cnf。
可通过源码构建镜像(s2i)扩展本镜像。例如,使用~/image-configuration/目录中的配置构建自定义镜像my-mariadb-rhel7:
bashs2i build ~/image-configuration/ rhscl/mariadb-100-rhel7 my-mariadb-rhel7
s2i build目录可包含以下子目录,用于自定义配置:
mysql-cfg/:存放mysqld守护进程配置文件,容器启动时会对文件执行envsubst命令以支持环境变量替换mysql-pre-init/:存放shell脚本(*.sh),在mysqld启动前执行mysql-init/:存放shell脚本(*.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:当容器从空数据目录初始化时定义也可在docker run时通过挂载目录自定义配置,将主机配置目录挂载至容器/opt/app-root/src/:
bashdocker run -v ./image-configuration/:/opt/app-root/src/ ...
通过上述扩展功能可启用SSL连接:
sslapp/mysql-certs/server-cert-selfsigned.pem sslapp/mysql-certs/server-key.pem
mysql-cfg/中创建SSL配置文件(如ssl.cnf):
ini[mysqld] ssl-key=${APP_DATA}/mysql-certs/server-key.pem ssl-cert=${APP_DATA}/mysql-certs/server-cert-selfsigned.pem
s2i build构建新镜像或直接挂载sslapp目录至容器。MariaDB版本格式为X.Y.Z,Z部分变更时数据格式兼容,无需特殊升级;X.Y至X.Y+1升级需参考***指南。不支持跨版本升级(如X.Y至X.Y+2)或降级,仅支持从MariaDB 5.5升级至10.0。
mysqldump或mysqldbexport导出数据,新建空数据库后用mysql或mysqldbimport导入mysql_upgrade,仅支持从紧前版本升级通过MYSQL_DATADIR_ACTION环境变量控制数据目录版本检查行为(多值用逗号分隔,按顺序执行):
upgrade-warn(默认):数据版本不匹配时打印警告,首次运行创建版本文件upgrade-auto:数据来自紧前版本时自动运行mysql_upgrade,其他版本打印警告upgrade-force:强制运行mysql_upgrade --force,创建缺失的版本文件optimize:运行mysqlcheck --optimize优化所有表analyze:运行mysqlcheck --analyze分析所有表disable:不执行任何数据目录版本相关操作mysqld守护进程日志输出至标准输出,可通过以下命令查看容器日志:
bashdocker logs <container>
本容器镜像的Dockerfile及源码可在GitHub仓库获取,其中CentOS版本的Dockerfile名为Dockerfile,RHEL版本为Dockerfile.rhel7。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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