如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
** 注意 **:这是https://hub.docker.com/_/mysql%E7%9A%84%60amd64%60%E6%9E%B6%E6%9E%84%E6%9E%84%E5%BB%BA%E7%9A%84%E2%80%9C%E6%AF%8F%E4%B8%AA%E6%9E%B6%E6%9E%84%E2%80%9D%E4%BB%93%E5%BA%93%E2%80%94%E2%80%94%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%A7%81%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84https://github.com/docker-library/official-images#architectures-other-than-amd64%E5%92%8C%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8FFAQ%E4%B8%AD%E7%9A%84https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
-** 维护者 **:
https://github.com/docker-library/mysql
-** 获取帮助的地方 **:
Docker社区Slack、Server Fault、Unix & Linux或Stack Overflow
https://github.com/docker-library/mysql/blob/7a5e9fbb739c7d423437b8687dfd400ea84fdb20/innovation/Dockerfile.oracle
https://github.com/docker-library/mysql/blob/7a5e9fbb739c7d423437b8687dfd400ea84fdb20/8.4/Dockerfile.oracle
https://github.com/docker-library/mysql/blob/7a5e9fbb739c7d423437b8687dfd400ea84fdb20/8.0/Dockerfile.oracle
https://github.com/docker-library/mysql/blob/7a5e9fbb739c7d423437b8687dfd400ea84fdb20/8.0/Dockerfile.debian
-** 问题反馈地址 **:
https://github.com/docker-library/mysql/issues?q=
-** 支持的架构 **:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/mysql/%E3%80%81https://hub.docker.com/r/arm64v8/mysql/
-** 镜像 artifact 详情 **:
https://github.com/docker-library/repo-info/blob/master/repos/mysql%EF%BC%88https://github.com/docker-library/repo-info/commits/master/repos/mysql%EF%BC%89
(镜像元数据、传输大小等)
-** 镜像更新 **:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmysql
https://github.com/docker-library/official-images/blob/master/library/mysql%EF%BC%88https://github.com/docker-library/official-images/commits/master/library/mysql%EF%BC%89
-** 本描述的来源 **:
https://github.com/docker-library/docs/tree/master/mysql%EF%BC%88https://github.com/docker-library/docs/commits/master/mysql%EF%BC%89
MySQL是世界上最流行的开源数据库。凭借其经过验证的性能、可靠性和易用性,MySQL已成为基于Web的应用程序的首选数据库,涵盖从个人项目和网站,到电子商务和信息服务,再到包括***、、、***!等在内的高知名度网络属性。
有关MySQL Server和其他MySQL产品的更多信息及相关下载,请访问[***]
!https://raw.githubusercontent.com/docker-library/docs/c408469abbac35ad1e4a50a6618836420eb9502e/mysql/logo.png
amd64/mysql服务器实例启动MySQL实例非常简单:
console$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d amd64/mysql:tag
其中some-mysql是你要分配给容器的名称,my-secret-pw是要为MySQL root用户设置的密码,tag是指定你想要的MySQL版本的标签。请参见上面的列表获取相关标签。
以下命令启动另一个amd64/mysql容器实例,并针对原始amd64/mysql容器运行mysql命令行客户端,允许你对数据库实例执行SQL语句:
console$ docker run -it --network some-network --rm amd64/mysql mysql -hsome-mysql -uexample-user -p
其中some-mysql是原始amd64/mysql容器的名称(连接到some-networkDocker网络)。
此镜像也可用作非Docker或远程实例的客户端:
console$ docker run -it --rm amd64/mysql mysql -hsome.mysql.host -usome-mysql-user -p
有关MySQL命令行客户端的更多信息,请参见MySQL文档。
mysql的compose.yaml示例:
yaml# 使用root/example作为用户/密码凭据 services: db: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example # (这只是示例,不旨在作为生产配置)
运行docker compose up,等待其完全初始化,然后访问http://localhost:8080或http://host-ip:8080(视情况而定)。
docker exec命令允许你在Docker容器内运行命令。以下命令将为你提供amd64/mysql容器内的bash shell:
console$ docker exec -it some-mysql bash
日志可通过Docker的容器日志查看:
console$ docker logs some-mysql
MySQL的默认配置因基础镜像而异:
基于Oracle的镜像(默认):默认配置位于/etc/my.cnf,可能通过!includedir包含其他目录,如/etc/mysql/conf.d。
基于Debian的MySQL 8镜像:默认配置位于/etc/mysql/my.cnf,可能通过!includedir包含其他目录,如/etc/mysql/conf.d。
请在amd64/mysql镜像内检查相关文件和目录以获取更多详细信息。
如果/my/custom/config-file.cnf是你的自定义配置文件的路径和名称,你可以这样启动amd64/mysql容器(注意此命令中仅使用自定义配置文件的目录路径):
console$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d amd64/mysql:tag
这将启动一个新容器some-mysql,其中MySQL实例使用默认配置文件和/etc/mysql/conf.d/config-file.cnf的组合启动设置,后者的设置优先。
许多配置选项可以作为mysqld的标志传递。这使你能够自定义容器而无需cnf文件。例如,如果你想将所有表的默认编码和排序规则更改为使用UTF-8(utf8mb4),只需运行以下命令:
console$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d amd64/mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果你想查看所有可用选项的完整列表,只需运行:
console$ docker run -it --rm amd64/mysql:tag --verbose --help
启动amd64/mysql镜像时,你可以通过在docker run命令行上传递一个或多个环境变量来调整MySQL实例的配置。请注意,如果启动容器时数据目录已包含数据库,则以下变量均不会生效:任何预先存在的数据库在容器启动时都将保持不变。
另请参见[***]
MYSQL_ROOT_PASSWORD此变量是必需的,指定将为MySQLroot超级用户账户设置的密码。在上面的示例中,它被设置为my-secret-pw。
MYSQL_DATABASE此变量是可选的,允许你指定在镜像启动时要创建的数据库名称。如果提供了用户/密码(见下文),则该用户将被授予对该数据库的超级用户访问权限(对应于GRANT ALL)。
MYSQL_USER、MYSQL_PASSWORD这些变量是可选的,结合使用以创建新用户并设置该用户的密码。此用户将被授予对MYSQL_DATABASE变量指定的数据库的超级用户权限(见上文)。创建用户需要这两个变量。
请注意,无需使用此机制创建root超级用户,该用户默认使用MYSQL_ROOT_PASSWORD变量指定的密码创建。
MYSQL_ALLOW_EMPTY_PASSWORD这是一个可选变量。设置为非空值(如yes),允许容器以root用户空密码启动。** 注意 **:除非你确实知道自己在做什么,否则不建议将此变量设置为yes,因为这会使你的MySQL实例完全不受保护,允许任何人获得完全的超级用户访问权限。
MYSQL_RANDOM_ROOT_PASSWORD这是一个可选变量。设置为非空值(如yes),为root用户生成随机初始密码(使用openssl)。生成的root密码将打印到标准输出(GENERATED ROOT PASSWORD: .....)。
MYSQL_ONETIME_PASSWORD初始化完成后将root用户(不是MYSQL_USER指定的用户!)设置为过期状态,强制首次登录时更改密码。任何非空值都将激活此设置。** 注意 **:此功能仅在MySQL 5.6+上受支持。在MySQL 5.5上使用此选项将在初始化期间抛出相应错误。
MYSQL_INITDB_SKIP_TZINFO默认情况下,入口点脚本会自动加载CONVERT_TZ()函数所需的时区数据。如果不需要,任何非空值都会禁用时区加载。
作为通过环境变量传递敏感信息的替代方法,可以将_FILE附加到前面列出的环境变量,使初始化脚本从容器中存在的文件加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker Secrets加载密码。例如:
console$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d amd64/mysql:tag
目前,仅MYSQL_ROOT_PASSWORD、MYSQL_ROOT_HOST、MYSQL_DATABASE、MYSQL_USER和MYSQL_PASSWORD支持此功能。
当容器首次启动时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行/docker-entrypoint-initdb.d中找到的扩展名为.sh、.sql、.sql.gz、.sql.bz2、.sql.xz和.sql.zst的文件。文件将按字母顺序执行。当解析没有执行位的.sh文件时,它们会被source而不是执行。
你可以通过将SQL转储挂载到该目录并提供自定义镜像来轻松填充amd64/mysql服务。SQL文件默认将导入到MYSQL_DATABASE变量指定的数据库中。
重要提示:有多种方式存储Docker容器中运行的应用程序所使用的数据。我们鼓励amd64/mysql镜像的用户熟悉可用的选项,包括:
Docker文档是了解不同存储选项和变体的良好起点,有许多博客和论坛帖子讨论并提供了这方面的建议。我们在这里仅展示上述后一种选项的基本过程:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动amd64/mysql容器:
console$ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d amd64/mysql:tag
命令中的-v /my/own/datadir:/var/lib/mysql部分将底层主机系统的/my/own/datadir目录挂载为容器内的/var/lib/mysql,MySQL默认会在此处写入其数据文件。
如果容器启动时没有初始化数据库,则会创建默认数据库。虽然这是预期行为,但这意味着在初始化完成之前,它不会接受传入连接。当使用自动化工具(如Docker Compose)同时启动多个容器时,这可能会导致问题。
如果你尝试连接到MySQL的应用程序不能优雅地处理MySQL停机或等待MySQL启动,那么在服务启动前放置一个连接重试循环可能是必要的。有关官方镜像中此类实现的示例,请参见https://github.com/docker-library/wordpress/blob/1b48b4bccd7adb0f7ea1431c7b470a40e186f3da/docker-entrypoint.sh#L195-L235%E6%88%96https://github.com/docker-library/docs/blob/9660a0cccb87d8db842f33bc0578d769caaf3ba9/bonita/stack.yml#L28-L44%E3%80%82
如果你启动amd64/mysql容器实例时,数据目录已包含数据库(特别是mysql子目录),则$MYSQL_ROOT_PASSWORD变量应从运行命令行中省略;无论如何它都会被忽略,并且预先存在的数据库不会以任何方式更改。
如果你知道目录的权限已适当设置(例如针对现有数据库运行,如上所述),或者你需要以特定UID/GID运行mysqld,则可以使用--user将此镜像调用为任何值(root/0除外)以实现所需的访问/配置:
console$ mkdir data $ ls -lnd data drwxr-xr-x 2 1000 1000 4096 Aug 27 15:54 data $ docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d amd64/mysql:tag
大多数常规工具都可以使用,尽管在某些
以下是 amd64/mysql 相关的常用 Docker 镜像,适用于 关系型数据库、事务处理、数据存储 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务