本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
本容器镜像包含适用于OpenShift和一般用途的MySQL 8.0 SQL数据库服务器。用户可选择基于RHEL、CentOS或Fedora的镜像:RHEL镜像可从Red Hat Container Catalog获取,CentOS镜像可从Quay.io获取,Fedora镜像可从Fedora Registry获取。生成的镜像可使用podman运行。
注意:本文档中的示例使用
podman命令,所有此类命令均可替换为docker,参数保持不变。
以下示例使用Red Hat Container Catalog中的MySQL 8.0容器镜像rhscl/mysql-80-rhel7。若仅设置必要环境变量且不将数据库存储在主机目录,执行以下命令:
$ docker run -d --name mysql_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 rhscl/mysql-80-rhel7
此命令将创建名为mysql_database的容器,运行MySQL数据库db,用户凭据为user:pass,并将容器的3306端口映射到主机。若需数据库在容器重启后持久化,添加-v /host/db/path:/var/lib/mysql/data参数,其中/host/db/path为主机数据目录。
首次运行时,若数据库目录未初始化,入口脚本将执行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_CHARSET:默认字符集(可选)MYSQL_COLLATION:默认排序规则(可选)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:binlog格式(默认:statement,支持row/statement)MYSQL_LOG_QUERIES_ENABLED:启用查询日志(默认:0,设为1启用)MYSQL_DEFAULT_AUTHENTICATION_PLUGIN:默认认证插件(默认:caching_sha2_password,支持mysql_native_password)通过-v /host:/container参数设置以下挂载点:
/var/lib/mysql/data:MySQL数据目录注意:从主机挂载目录到容器时,需确保挂载目录具有适当权限,且目录的所有者和组与容器内运行的用户UID或名称匹配。
当MySQL镜像使用--memory参数运行且未指定部分配置值时,这些值将基于可用内存自动计算:
MYSQL_KEY_BUFFER_SIZE(默认:10%可用内存)MYSQL_READ_BUFFER_SIZE(默认:5%可用内存)MYSQL_INNODB_BUFFER_POOL_SIZE(默认:50%可用内存)MYSQL_INNODB_LOG_FILE_SIZE(默认:15%可用内存)MYSQL_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)。
可在OpenShift中使用Source构建策略或独立source-to-image工具扩展镜像(需工具可用)。以下示例使用rhscl/mysql-80-rhel7镜像(OpenShift中mysql:8.0镜像流标签)。
通过GitHub仓库配置构建镜像my-mysql-rhel7:
$ oc new-app mysql:8.0~[***] \ --name my-mysql-rhel7 \ --context-dir=examples/extend-image \ --env MYSQL_OPERATIONS_USER=opuser \ --env MYSQL_OPERATIONS_PASSWORD=oppass \ --env MYSQL_DATABASE=opdb \ --env MYSQL_USER=user \ --env MYSQL_PASSWORD=pass
或使用s2i:
$ s2i build --context-dir=examples/extend-image [***] rhscl/mysql-80-rhel7 my-mysql-rhel7
构建目录可包含以下目录,用于自定义镜像:
mysql-cfg/:启动时用于mysqld守护进程的配置文件,支持通过envsubst命令使用环境变量mysql-pre-init/:mysqld启动前执行的Shell脚本(*.sh)mysql-init/:mysqld本地启动后执行的Shell脚本(*.sh),可使用${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.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,Z部分变更为兼容升级,无需特殊处理;X.Y到X.Y+1为不兼容升级,需参考官方文档。不支持跨版本升级(如X.Y到X.Y+2)或降级(MariaDB 5.5到10.0除外)。
mysqldump或mysqldbexport导出数据,导入到新初始化数据库mysqld并立即运行mysql_upgrade(仅支持从紧前版本升级)通过MYSQL_DATADIR_ACTION变量控制数据目录操作(多值用逗号分隔,按顺序执行):
upgrade-warn:检测到版本不匹配时打印警告(默认)upgrade-auto:仅当数据来自紧前版本时自动运行mysql_upgradeupgrade-force:无论版本如何,强制运行mysql_upgrade --forceoptimize:运行mysqlcheck --optimizeanalyze:运行mysqlcheck --analyzedisable:不执行数据目录版本检查通过MYSQL_BINLOG_FORMAT环境变量设置binlog格式(默认:statement),支持row或statement。例如:
$ docker run -e MYSQL_BINLOG_FORMAT=row ...
MySQL 8.0默认认证插件为caching_sha2_password(更快更安全)。若客户端不支持,可通过MYSQL_DEFAULT_AUTHENTICATION_PLUGIN环境变量修改为mysql_native_password(MySQL 5.7兼容):
$ docker run -e MYSQL_DEFAULT_AUTHENTICATION_PLUGIN=mysql_native_password ...
mysqld守护进程日志输出到标准输出,可通过以下命令查看容器日志:
docker logs <容器名>
容器镜像的Dockerfile及源码位于GitHub仓库。仓库中:
DockerfileDockerfile.rhel7Dockerfile.rhel8Dockerfile.fedora
免费版仅支持 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