本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
由 Docker 社区及 MySQL 团队 维护。
可通过 Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow 获取帮助。
9.4.0
, 9.4
, 9
, innovation
, latest
, 9.4.0-oraclelinux9
, 9.4-oraclelinux9
, 9-oraclelinux9
, innovation-oraclelinux9
, oraclelinux9
, 9.4.0-oracle
, 9.4-oracle
, 9-oracle
, innovation-oracle
, oracle
8.4.6
, 8.4
, 8
, lts
, 8.4.6-oraclelinux9
, 8.4-oraclelinux9
, 8-oraclelinux9
, lts-oraclelinux9
, 8.4.6-oracle
, 8.4-oracle
, 8-oracle
, lts-oracle
8.0.43
, 8.0
, 8.0.43-oraclelinux9
, 8.0-oraclelinux9
, 8.0.43-oracle
, 8.0-oracle
8.0.43-bookworm
, 8.0-bookworm
, 8.0.43-debian
, 8.0-debian
amd64
(详情)arm64v8
(详情)repos/mysql/
目录(历史记录)library/mysql
标签library/mysql
文件(历史记录)docs 仓库的 mysql/
目录(历史记录)
MySQL 是全球最流行的开源数据库,以其可靠的性能和易用性成为 Web 应用的首选数据库,覆盖从个人项目、网站到电商平台、信息服务,乃至 、、、! 等大型网站。
更多信息及 MySQL 服务器和其他产品的下载,见 [***]
!MySQL logo
启动 MySQL 实例的基本命令:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
some-mysql
:容器名称(可自定义)-e MYSQL_ROOT_PASSWORD=my-secret-pw
:设置 root 用户密码(必填)-d
:后台运行容器mysql:tag
:指定镜像标签(如 mysql:8.4
,标签列表见上文)通过另一个容器连接到已启动的 some-mysql
实例:
$ docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p
--network some-network
:确保两个容器在同一网络(若未指定网络,需先创建并连接容器)--rm
:退出后自动删除临时容器-hsome-mysql
:目标 MySQL 容器的名称(或 IP)也可直接连接非 Docker 环境的远程 MySQL:
$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p
更多 MySQL 命令行客户端用法见 官方文档。
以下是 compose.yaml
示例(以 root/example 为默认账号密码):
services: db: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example # 注意:此配置仅为示例,不建议用于生产环境
启动命令:docker compose up
,等待初始化完成后即可使用。
通过 docker exec
进入运行中的容器:
$ docker exec -it some-mysql bash
通过 Docker 容器日志查看 MySQL 运行日志:
$ docker logs some-mysql
/etc/my.cnf
,可能包含 /etc/mysql/conf.d
目录的扩展配置/etc/mysql/my.cnf
,可能包含 /etc/mysql/conf.d
目录的扩展配置建议先进入容器查看具体配置结构。
若自定义配置文件路径为 /my/custom/config-file.cnf
,通过以下命令挂载配置目录:
$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
-v /my/custom:/etc/mysql/conf.d
:将主机目录 /my/custom
挂载到容器的配置扩展目录可直接通过 mysqld
命令行参数自定义配置(无需配置文件)。例如,设置默认字符集为 utf8mb4
:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
查看所有可用参数:
$ docker run -it --rm mysql:tag --verbose --help
启动容器时可通过 -e
设置以下环境变量(首次初始化数据库时生效,已有数据库时忽略):
MYSQL_ROOT_PASSWORD
:设置 root 用户密码(必填,除非使用 MYSQL_ALLOW_EMPTY_PASSWORD
或 MYSQL_RANDOM_ROOT_PASSWORD
)MYSQL_DATABASE
:初始化时创建指定名称的数据库MYSQL_USER
& MYSQL_PASSWORD
:创建新用户并授予 MYSQL_DATABASE
的所有权限(需同时设置)MYSQL_ALLOW_EMPTY_PASSWORD
:允许 root 密码为空(设为 yes
,不推荐生产环境)MYSQL_RANDOM_ROOT_PASSWORD
:生成随机 root 密码(设为 yes
,密码会打印到日志)MYSQL_ONETIME_PASSWORD
:强制 root 用户首次登录需修改密码(MySQL 5.6+ 支持,设为非空值)MYSQL_INITDB_SKIP_TZINFO
:跳过时区数据加载(设为非空值,不影响 CONVERT_TZ()
函数时可用)通过环境变量后缀 _FILE
从文件加载值(适用于 Docker Secrets)。例如,从 /run/secrets/mysql-root
文件读取 root 密码:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag
支持的变量:MYSQL_ROOT_PASSWORD_FILE
、MYSQL_ROOT_HOST_FILE
、MYSQL_DATABASE_FILE
、MYSQL_USER_FILE
、MYSQL_PASSWORD_FILE
。
容器首次启动时,若数据库目录为空,会自动初始化数据库,并执行 /docker-entrypoint-initdb.d
目录下的 .sh
、.sql
、.sql.gz
、.sql.bz2
、.sql.xz
、.sql.zst
文件(按字母顺序执行)。
将 SQL 脚本挂载到 /docker-entrypoint-initdb.d
:
$ docker run --name some-mysql -v /path/to/init.sql:/docker-entrypoint-initdb.d/init.sql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
SQL 文件会自动导入到 MYSQL_DATABASE
指定的数据库(未指定则导入到默认数据库)。
MySQL 数据默认存储在容器内的 /var/lib/mysql
,建议通过以下方式持久化数据:
让 Docker 管理存储,数据保存在主机的 Docker 卷中(路径由 Docker 控制):
$ docker run --name some-mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
mysql-data
:卷名称(首次使用会自动创建)将主机目录挂载到容器内的 /var/lib/mysql
(需确保目录权限正确):
$ mkdir -p /my/own/datadir $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
容器启动时若需初始化数据库(首次启动且数据目录为空),初始化期间无法接受连接。自动化工具(如 Docker Compose)同时启动多个容器时可能遇到此问题,建议在应用中添加连接重试逻辑(参考 WordPress 的实现)。
若挂载的 /var/lib/mysql
目录已包含数据库(如 /var/lib/mysql/mysql
子目录),无需设置 MYSQL_ROOT_PASSWORD
,容器会直接使用现有数据库,忽略所有初始化环境变量。
若需指定 UID/GID 运行 mysqld
(如适配主机目录权限),可通过 --user
参数设置(非 root 用户):
$ mkdir data && chown 1000:1000 data # 主机目录权限设为 1000:1000 $ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
通过 docker exec
在容器内执行 mysqldump
:
$ docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /host/path/all-databases.sql
通过 docker exec -i
导入 SQL 文件:
$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /host/path/all-databases.sql
mysql/
目录使用前请确保遵守所有包含软件的许可条款。
免费版仅支持 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