本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Percona Server for MySQL是由Percona创建的MySQL关系型数据库管理系统的分支。该镜像旨在保持与官方MySQL版本的高度兼容性,同时专注于性能优化和增强服务器操作的可见性。其核心包含Percona的XtraDB存储引擎(InnoDB的增强版),适用于需要高性能、高可靠性MySQL兼容数据库的Docker化部署场景。
/docker-entrypoint-initdb.d目录下的.sh、.sql、.sql.gz文件。| 标签 | 说明 | Dockerfile链接 |
|---|---|---|
8.0.43-34-centos, 8.0-centos, 8-centos, 8.0.43-34, 8.0, 8, ps-8.0.43-34, ps-8.0, ps-8 | Percona Server 8.0系列 | 链接 |
psmdb-8.0.12, psmdb-8.0 | Percona Server MongoDB 8.0 | 链接 |
psmdb-7.0.24, psmdb-7.0 | Percona Server MongoDB 7.0 | 链接 |
psmdb-6.0.25, psmdb-6.0 | Percona Server MongoDB 6.0 | 链接 |
通过以下命令启动一个基础Percona Server容器:
docker run --name some-percona -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:tag
some-percona:容器名称(自定义)。my-secret-pw:root用户密码(必选)。tag:指定镜像标签(如8.0,见“支持的标签”列表)。在同一Docker网络中启动客户端容器,连接到目标数据库:
docker run -it --network some-network --rm percona mysql -hsome-percona -uexample-user -p
some-network:目标数据库容器所在的Docker网络。some-percona:目标数据库容器名称。example-user:数据库用户名(需提前创建)。作为客户端连接非Docker或远程数据库:
docker run -it --rm percona mysql -hsome.mysql.host -usome-mysql-user -p
创建compose.yaml文件,定义数据库和管理工具(如Adminer):
# 使用 root/example 作为用户名/密码凭据 services: db: image: percona:8.0 # 指定标签 restart: always environment: MYSQL_ROOT_PASSWORD: example # root密码 volumes: - percona-data:/var/lib/mysql # 数据持久化卷 adminer: image: adminer restart: always ports: - 8080:8080 # 暴露Adminer端口 volumes: percona-data: # 声明命名卷
启动服务:
docker compose up -d
访问http://localhost:8080通过Adminer管理数据库。
docker exec -it some-percona bash
docker logs some-percona
Percona默认加载/etc/my.cnf及/etc/my.cnf.d/*.cnf配置。通过挂载主机目录覆盖配置:
docker run --name some-percona \ -v /my/custom:/etc/my.cnf.d \ # 主机配置目录挂载到容器 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
/my/custom下的.cnf文件会覆盖默认配置。通过命令行参数直接传递mysqld选项,无需配置文件:
docker run --name some-percona \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag \ --character-set-server=utf8mb4 \ # 设置默认字符集 --collation-server=utf8mb4_unicode_ci # 设置默认排序规则
查看所有可用参数:
docker run -it --rm percona:tag --verbose --help
| 变量名 | 说明 | 必选/可选 | 默认值 |
|---|---|---|---|
MYSQL_ROOT_PASSWORD | root用户密码 | 必选 | - |
MYSQL_ROOT_HOST | 限制root用户连接来源主机(如localhost) | 可选 | 允许所有主机 |
MYSQL_DATABASE | 初始化时创建的数据库名称 | 可选 | - |
MYSQL_USER | 初始化时创建的普通用户名(需与MYSQL_PASSWORD同时设置) | 可选 | - |
MYSQL_PASSWORD | MYSQL_USER对应的密码 | 可选 | - |
MYSQL_ALLOW_EMPTY_PASSWORD | 允许root密码为空(不推荐生产环境) | 可选 | no |
MYSQL_RANDOM_ROOT_PASSWORD | 生成随机root密码(日志中输出) | 可选 | no |
MYSQL_ONETIME_PASSWORD | 强制root用户首次登录修改密码(仅MySQL 5.6+支持) | 可选 | no |
MYSQL_INITDB_SKIP_TZINFO | 禁用初始化时加载系统时区信息(影响CONVERT_TZ()函数) | 可选 | no |
INIT_TOKUDB | 启用TokuDB引擎(需禁用透明大页THP) | 可选 | no |
INIT_ROCKSDB | 启用RocksDB引擎 | 可选 | no |
通过_FILE后缀从文件加载敏感变量(如密码),避免明文暴露。例如:
docker run --name some-percona \ -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root \ # 从文件加载root密码 -d percona:tag
支持的变量:MYSQL_ROOT_PASSWORD_FILE、MYSQL_ROOT_HOST_FILE、MYSQL_DATABASE_FILE、MYSQL_USER_FILE、MYSQL_PASSWORD_FILE。
8.0.35-27及以上版本默认启用遥测(发送使用数据到Percona),可通过以下环境变量禁用:
docker run --name some-percona \ -e PERCONA_TELEMETRY_DISABLE=1 \ # 禁用遥测 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
首次启动容器时,若数据目录为空,将自动执行以下操作:
MYSQL_DATABASE指定的数据库(若设置)。MYSQL_USER指定的用户,并授予其MYSQL_DATABASE的所有权限(若设置)。/docker-entrypoint-initdb.d目录下的初始化文件,按字母顺序执行:
.sh:Bash脚本(需可执行权限)。.sql:SQL脚本。.sql.gz:压缩SQL脚本(自动解压执行)。示例:挂载本地SQL文件到初始化目录:
docker run --name some-percona \ -v /local/init-scripts:/docker-entrypoint-initdb.d \ # 挂载初始化脚本目录 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
推荐使用Docker卷或绑定挂载持久化数据,避免容器删除导致数据丢失:
docker run --name some-percona \ -v /my/own/datadir:/var/lib/mysql \ # 主机目录挂载到数据目录 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
docker volume create percona-data # 创建命名卷 docker run --name some-percona \ -v percona-data:/var/lib/mysql \ # 使用命名卷 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
首次启动时,数据库初始化期间无法接受连接。自动化部署(如docker compose)需注意:
depends_on仅保证启动顺序,不保证初始化完成,需额外处理。若数据目录已存在数据库(如/var/lib/mysql/mysql子目录),启动时必须省略MYSQL_ROOT_PASSWORD,否则会被忽略,且数据库不会被修改。
docker exec some-percona sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /host/backup/all-databases.sql
docker exec -i some-percona sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /host/backup/all-databases.sql
使用前请确保符合所有包含软件的许可证要求。
免费版仅支持 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