本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
该容器镜像包含 MySQL 5.6 SQL 数据库服务器,适用于 OpenShift 和通用场景。用户可选择基于 RHEL 或 CentOS 的镜像:RHEL 镜像可从 Red Hat Container Catalog 获取,镜像名为 registry.access.redhat.com/rhscl/mysql-56-rhel7;CentOS 镜像可从 Docker Hub 获取,镜像名为 centos/mysql-56-centos7。
本容器镜像提供 MySQL mysqld 守护进程和客户端应用的容器化打包。mysqld 服务器守护进程接受客户端连接,并代表客户端提供对 MySQL 数据库内容的访问。有关 MySQL 项目的更多信息,请访问官方网站([***]
以下示例使用 Red Hat Container Catalog 中的 rhscl/mysql-56-rhel7 镜像。若仅设置必要环境变量且不使用主机目录存储数据库,执行以下命令:
$ docker run -d --name mysql_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mysql-56-rhel7
此命令将创建名为 mysql_database 的容器,运行 MySQL 数据库 db,用户凭据为 user:pass,并将容器的 3306 端口映射到主机。若需持久化数据库,添加 -v /host/db/path:/var/lib/mysql/data 参数(/host/db/path 为主机目录,/var/lib/mysql/data 为容器内 MySQL 数据目录)。
首次运行时,若数据目录未初始化,入口脚本将执行 mysql_install_db 并设置必要的数据库用户和密码;若已初始化,则直接启动 mysqld(以 PID 1 运行)。停止容器:docker stop mysql_database。
通过 -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(默认:4):FULLTEXT 索引包含的最小单词长度MYSQL_FT_MAX_WORD_LEN(默认:20):FULLTEXT 索引包含的最大单词长度MYSQL_AIO(默认:1):控制 innodb_use_native_aio 设置(原生 AIO 损坏时使用)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(默认:32M 或可用内存的 50%):InnoDB 缓存表和索引数据的缓冲池大小MYSQL_INNODB_LOG_FILE_SIZE(默认:8M 或可用内存的 15%):日志组中每个日志文件的大小MYSQL_INNODB_LOG_BUFFER_SIZE(默认:8M 或可用内存的 15%):InnoDB 写入日志文件的缓冲区大小MYSQL_DEFAULTS_FILE(默认:/etc/my.cnf):指向替代配置文件的路径MYSQL_BINLOG_FORMAT(默认:statement):binlog 格式,支持 row 和 statementMYSQL_LOG_QUERIES_ENABLED(默认:0):设为 1 启用查询日志通过 -v /host:/container 挂载主机目录到容器,支持以下挂载点:
/var/lib/mysql/data:MySQL 数据目录注意:从主机挂载目录到容器时,需确保挂载目录具有适当权限,且目录的所有者和组与容器内运行的用户 UID 或名称匹配。
当容器运行时设置 --memory 参数且未指定部分参数,其值将基于可用内存自动计算:
MYSQL_KEY_BUFFER_SIZE(默认:10%):key_buffer_sizeMYSQL_READ_BUFFER_SIZE(默认:5%):read_buffer_sizeMYSQL_INNODB_BUFFER_POOL_SIZE(默认:50%):innodb_buffer_pool_sizeMYSQL_INNODB_LOG_FILE_SIZE(默认:15%):innodb_log_file_sizeMYSQL_INNODB_LOG_BUFFER_SIZE(默认:15%):innodb_log_buffer_sizeroot 用户默认无密码,仅允许本地连接。通过 MYSQL_ROOT_PASSWORD 环境变量可设置密码,允许远程连接(本地连接仍无需密码)。若需禁用远程 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。
可通过 source-to-image 扩展镜像。例如,使用 ~/image-configuration/ 中的配置构建自定义镜像 my-mysql-rhel7:
$ s2i build ~/image-configuration/ rhscl/mysql-56-rhel7 my-mysql-rhel7
s2i build 传递的目录可包含以下子目录:
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:数据目录从空初始化时定义s2i build 会将文件复制到镜像的 /opt/app-root/src 目录,覆盖同名默认文件。也可通过 docker run -v ./image-configuration/:/opt/app-root/src/ 挂载目录临时自定义。
通过扩展功能配置 SSL:
sslapp/mysql-certs/),存放证书文件(server-cert-selfsigned.pem、server-key.pem)mysql-cfg/ 中创建配置文件(如 ssl.cnf):
[mysqld] ssl-key=${APP_DATA}/mysql-certs/server-key.pem ssl-cert=${APP_DATA}/mysql-certs/server-cert-selfsigned.pem
-v 挂载 sslapp 目录,或使用 s2i 构建新镜像。MySQL 版本格式为 X.Y.Z(如 5.6.23):
重要:升级有风险,建议先备份数据。安全升级方式:用
mysqldump导出数据,在新初始化的数据库中导入;或启动新版本mysqld后执行mysql_upgrade(仅支持相邻版本升级)。
通过 MYSQL_DATADIR_ACTION 变量控制数据目录操作(多值用逗号分隔,按顺序执行):
upgrade-warn(默认):版本不匹配时警告并启动,创建缺失的 mysql_upgrade_info 文件upgrade-auto:检测到前一版本时自动执行 mysql_upgradeupgrade-force:强制执行 mysql_upgrade --force,创建缺失的版本文件optimize:执行 mysqlcheck --optimize(优化所有表)analyze:执行 mysqlcheck --analyze(分析所有表)disable:不执行数据目录版本相关操作默认 binlog 格式为 statement,可通过 MYSQL_BINLOG_FORMAT=row 改为 row 格式。以 run-mysqld-master 命令运行主库时,binlog 将记录行数据变更而非 SQL 语句。
容器内 mysqld 守护进程日志输出到标准输出,可通过以下命令查看:
docker 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429