该容器镜像包含MariaDB 10.1 SQL数据库服务器,适用于OpenShift和通用使用场景。用户可选择基于RHEL或CentOS的镜像版本:
registry.access.redhat.com/rhscl/mariadb-101-rhel7centos/mariadb-101-centos7该容器镜像提供MariaDB mysqld守护进程和客户端应用的容器化打包。mysqld服务器守护进程接受客户端连接,并代表客户端提供对MySQL数据库内容的访问。更多关于MariaDB项目的信息可访问网站([]
适用于需要部署MariaDB 10.1数据库服务器的场景,包括开发、测试和生产环境,支持OpenShift平台及通用Docker环境,满足中小型应用的数据库服务需求。
以下示例基于Red Hat Container Catalog的MariaDB 10.1镜像rhscl/mariadb-101-rhel7。
若仅设置必要环境变量且不使用主机目录存储数据库,执行以下命令:
bash$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mariadb-101-rhel7
此命令将创建名为mariadb_database的容器,运行MySQL数据库db,用户凭据为user:pass,并映射主机3306端口到容器。
若需数据库在容器重启后持久化,添加-v /host/db/path:/var/lib/mysql/data参数(/host/db/path为主机目录):
bash$ docker 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-101-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:表名存储与比较方式,默认0MYSQL_MAX_CONNECTIONS:最大客户端连接数,默认151MYSQL_MAX_ALLOWED_PACKET:最大数据包大小,默认200MMYSQL_FT_MIN_WORD_LEN:FULLTEXT索引最小词长,默认4MYSQL_FT_MAX_WORD_LEN:FULLTEXT索引最大词长,默认20MYSQL_AIO:控制innodb_use_native_aio设置,默认1MYSQL_TABLE_OPEN_CACHE:所有线程的打开表数量,默认400MYSQL_KEY_BUFFER_SIZE:索引块缓冲区大小,默认32M或可用内存的10%MYSQL_SORT_BUFFER_SIZE:排序缓冲区大小,默认256KMYSQL_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.cnfMYSQL_BINLOG_FORMAT:二进制日志格式,支持row和statement,默认statementMYSQL_LOG_QUERIES_ENABLED:启用查询日志,设为1启用,默认0通过-v /host:/container挂载以下目录:
/var/lib/mysql/data:MySQL数据目录注意:挂载主机目录到容器时,需确保目录权限正确,且所有者/组与容器内运行用户的UID或名称匹配。
当容器使用--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账户;本地连接仍无需密码。取消远程访问: unset 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。
通过source-to-image扩展镜像,示例命令:
bash$ s2i build ~/image-configuration/ rhscl/mariadb-101-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:数据目录首次初始化时定义启动容器时挂载目录覆盖自定义配置:-v ./image-configuration/:/opt/app-root/src/。
创建SSL证书目录(如sslapp/mysql-certs/),存放证书:
server-cert-selfsigned.pem(服务器证书)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
通过-v挂载目录或s2i构建新镜像应用配置。
mysqldump/mysqldbexport导出,新数据库导入mysqld后执行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及源码:[***]

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