fedora/mariadb该容器镜像包含MariaDB server 10.0,适用于OpenShift和一般用途。
镜像支持以下环境变量,可在初始化时通过-e VAR=VALUE参数传递给Docker run命令:
| 变量名 | 描述 |
|---|---|
MYSQL_USER | 要创建的MySQL用户账户名 |
MYSQL_PASSWORD | 用户账户的密码 |
MYSQL_DATABASE | 数据库名称 |
MYSQL_ROOT_PASSWORD | root用户密码(可选) |
以下环境变量会影响MySQL配置文件,均为可选:
| 变量名 | 描述 | 默认值 |
|---|---|---|
MYSQL_LOWER_CASE_TABLE_NAMES | 设置表名的存储和比较方式 | 0 |
MYSQL_MAX_CONNECTIONS | 允许的最大同时客户端连接数 | 151 |
MYSQL_MAX_ALLOWED_PACKET | 单个数据包或任何生成/中间字符串的最大大小 | 200M |
MYSQL_FT_MIN_WORD_LEN | 包含在全文索引中的最小单词长度 | 4 |
MYSQL_FT_MAX_WORD_LEN | 包含在全文索引中的最大单词长度 | 20 |
MYSQL_AIO | 控制innodb_use_native_aio设置值(当原生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 | 设置二进制日志格式,支持的值为row和statement | statement |
可通过-v /host:/container标志设置以下挂载点:
| 卷挂载点 | 描述 |
|---|---|
/var/lib/mysql/data | MySQL数据目录 |
注意:从主机挂载目录到容器时,确保挂载目录具有适当的权限,且目录的所有者和组与容器内运行的用户UID匹配。
假设使用fedora/mariadb镜像。若仅设置必要环境变量且不将数据库存储在主机目录中,执行以下命令:
$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 fedora/mariadb
此命令会创建一个名为mariadb_database的容器,运行MySQL数据库db,用户凭据为user:pass,并暴露3306端口映射到主机。若要使数据库在容器执行间持久化,添加-v /host/db/path:/var/lib/mysql/data参数,该路径将作为MySQL数据目录。
如果数据库目录未初始化,入口脚本会先运行mysql_install_db并设置必要的数据库用户和密码。数据库初始化后(或已存在),mysqld将作为PID 1运行。可通过docker stop mariadb_database停止后台容器。
当使用--memory参数运行MySQL镜像且未指定某些参数时,其值会根据可用内存自动计算:
| 变量名 | 配置参数 | 相对值 |
|---|---|---|
MYSQL_KEY_BUFFER_SIZE | key_buffer_size | 10% |
MYSQL_READ_BUFFER_SIZE | read_buffer_size | 5% |
MYSQL_INNODB_BUFFER_POOL_SIZE | innodb_buffer_pool_size | 50% |
MYSQL_INNODB_LOG_FILE_SIZE | innodb_log_file_size | 15% |
MYSQL_INNODB_LOG_BUFFER_SIZE | innodb_log_buffer_size | 15% |
root用户默认无密码,仅允许本地连接。可通过MYSQL_ROOT_PASSWORD环境变量设置密码,允许远程登录。本地连接仍无需密码。
要禁用远程root访问,只需取消设置MYSQL_ROOT_PASSWORD并重启容器。
数据库用户(MYSQL_USER)和root用户的密码仅支持通过环境变量MYSQL_PASSWORD和MYSQL_ROOT_PASSWORD分别更改。
通过SQL语句或其他方式更改密码会导致环境变量中存储的值与实际密码不匹配。数据库容器启动时会将密码重置为环境变量中存储的值。
通过环境变量可自定义多种MySQL引导配置参数。若要使用自定义配置文件,可通过MYSQL_DEFAULTS_FILE环境变量指定文件完整路径。例如,默认位置为/etc/my.cnf,可通过设置MYSQL_DEFAULTS_FILE=/etc/mysql/my.cnf更改为/etc/mysql/my.cnf。
某些应用(如基于变更数据捕获的应用)可能需要使用row二进制日志格式。默认复制/二进制日志格式为statement,可通过MYSQL_BINLOG_FORMAT环境变量更改。例如,设置MYSQL_BINLOG_FORMAT=row。
当以主复制模式运行数据库(即设置Docker/容器cmd为run-mysqld-master)时,二进制日志将输出更改行的实际数据,而非导致更改的语句(如数据操纵语言DML,如insert...)。

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