该容器镜像包含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...)。

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