centos/mariadb-100-centos7本容器镜像包含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。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务