
如果你使用 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/_/mariadb 的 i386 架构构建的"每架构"仓库——更多信息,请参见官方镜像文档中的 https://github.com/docker-library/official-images#architectures-other-than-amd64 和官方镜像FAQ中的 https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what%E3%80%82
维护者:
MariaDB基金会、MariaDB公司,以及来自https://github.com/MariaDB/mariadb-docker%E7%9A%84%E8%B4%A1%E7%8C%AE%E8%80%85
获取帮助:
数据库管理员(Stack Exchange)、MariaDB知识库(在此提问)。
另请参见MariaDB知识库上的 "获取MariaDB帮助"文章。
Dockerfile链接警告:此镜像在i386架构上不受支持
问题提交地址:
可在[***]"MDEV"项目和"Docker"组件下提交问题,或在https://github.com/MariaDB/mariadb-docker/issues%E4%B8%8A%E6%8F%90%E4%BA%A4
支持的架构:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/mariadb/%E3%80%81https://hub.docker.com/r/arm64v8/mariadb/%E3%80%81https://hub.docker.com/r/ppc64le/mariadb/%E3%80%81https://hub.docker.com/r/s390x/mariadb/
已发布镜像工件详情:
https://github.com/docker-library/repo-info/blob/master/repos/mariadb%EF%BC%88https://github.com/docker-library/repo-info/commits/master/repos/mariadb%EF%BC%89
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmariadb
https://github.com/docker-library/official-images/blob/master/library/mariadb%EF%BC%88https://github.com/docker-library/official-images/commits/master/library/mariadb%EF%BC%89
本描述的来源:
https://github.com/docker-library/docs/tree/master/mariadb%EF%BC%88https://github.com/docker-library/docs/commits/master/mariadb%EF%BC%89
MariaDB Server是世界上最受欢迎的数据库服务器之一。它由MySQL的原开发者打造,并保证保持开源。著名用户包括***、星展银行和ServiceNow。
其目标是保持与MySQL的高度兼容性,确保库二进制等效性以及与MySQL API和命令的精确匹配。MariaDB开发者持续开发新功能并提升性能,以更好地服务用户。
!https://raw.githubusercontent.com/docker-library/docs/554e4b9aaac2e266b9ab31e9a312cb6f96d69286/mariadb/logo.png
i386/mariadb有多个标签,其中值得注意的是latest(最新稳定版本)和lts(最新长期支持版本)。
端口绑定
默认情况下,容器内运行的数据库将监听3306端口。您可以通过docker run的-p 3306:3306参数将容器的3306端口映射到主机的3306端口,如下命令所示:
console$ docker run --name some-mariadb -p 3306:3306 i386/mariadb:latest
使用此镜像所需的环境变量包括设置root用户密码:
console$ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw i386/mariadb:latest
或:
console$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 i386/mariadb:latest
或:
console$ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1 i386/mariadb:latest
...其中容器日志将包含生成的root密码。
mariadb的compose.yaml示例:
yaml# 使用root/example作为用户/密码凭据 services: db: image: mariadb restart: always environment: MARIADB_ROOT_PASSWORD: example adminer: image: adminer restart: always ports: - 8080:8080
运行docker compose up,等待其完全初始化,然后访问http://localhost:8080或http://host-ip:8080(视情况而定)。
i386/mariadb服务器实例启动带有用户、密码和数据库的MariaDB实例:
console$ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=exmple-database --env MARIADB_ROOT_PASSWORD=my-secret-pw i386/mariadb:latest
i386/mariadb服务器实例由于应用程序需要与MariaDB通信,MariaDB需要与应用程序在同一网络中启动:
console$ docker network create some-network $ docker run --detach --network some-network --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw i386/mariadb:latest $ docker run --detach --network some-network --name some-application --env APP_DB_HOST=some-mariadb --env APP_DB_USER=example-user --env APP_DB_PASSWD=my_cool_secret some-application
...其中some-network是新创建的网络(非默认的bridge网络),some-mariadb是您要分配给容器的名称,my-secret-pw是要为MariaDB root用户设置的密码。有关匹配您需求和环境的相关标签,请参见上面的列表。some-application及其环境变量APP_DB_HOST、APP_DB_USER和APP_DB_PASSWD是应用程序的数据库连接配置。
以下命令启动另一个i386/mariadb容器实例,并针对原始i386/mariadb容器运行mariadb命令行客户端,允许您对数据库实例执行SQL语句:
console$ docker run -it --network some-network --rm i386/mariadb mariadb -h some-mariadb -u example-user
...其中some-mariadb是原始i386/mariadb容器的名称(已连接到some-network Docker网络)。
此镜像也可用作非Docker或远程实例的客户端:
console$ docker run -it --rm i386/mariadb mariadb --host <服务器容器IP> --user example-user --password --database test
这将为您提供标准的MariaDB提示符。您可以通过以下命令进行测试:
consoleMariaDB [(none)]> \s -------------- client/mariadb Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using EditLine wrapper Connection id: 20 Current database: test Current user: example-user@bark SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server: MariaDB Server version: 10.6.16-MariaDB Source distribution Protocol version: 10 Connection: 192.168.178.73 via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: utf8mb3 Conn. characterset: utf8mb3 TCP port: 3306 Uptime: 6 min 4 sec Threads: 1 Questions: 32 Slow queries: 0 Opens: 20 Open tables: 13 Queries per second avg: 0.087 --------------
...这将为您提供版本和连接信息。然后您可以使用exit离开MariaDB命令行客户端和客户端容器。
有关MariaDB命令行客户端的更多信息,请参见MariaDB知识库:MariaDB命令行客户端。
docker exec命令允许您在运行的容器内执行命令。以下命令将为您提供i386/mariadb容器内的bash shell:
console$ docker exec -it some-mariadb bash
由于MariaDB-Backup与服务器版本高度耦合,使用特定版本的mariadb容器中的mariadb-backup可能很有用:
console$ docker run --volume /backup-volume:/backup --rm mariadb:10.6.15 mariadb-backup --help
日志可通过Docker的容器日志查看:
console$ docker logs some-mariadb
自定义配置文件应以.cnf结尾,并以只读方式挂载到/etc/mysql/conf.d目录。这些文件应包含针对您的应用程序/环境所需的MariaDB工作负载的最小更改。MariaDB配置文件将包含[mariadb]组,后跟根据设置服务器系统变量或option-prefix-variable的variable = value设置。
i386/mariadb镜像配置包含Ubuntu MariaDB变量,并针对容器有两个自定义更改:
host-cache-size=0skip-name-resolve这些禁用了user@hostname用户的身份验证。要重新启用skip-name-resolve,请使用disable-skip-name-resolve作为变量或参数。启用后,host-cache-size应足以容纳连接到i386/mariadb的容器数量。
要查看i386/mariadb容器的最终配置:
console$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm i386/mariadb:latest my_print_defaults --mysqld
cnf文件的配置许多配置选项可以作为标志传递给mariadbd。这使您可以灵活地自定义容器而无需cnf文件。例如,如果您想在3808端口上运行,只需运行以下命令:
console$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d i386/mariadb:latest --port 3808
如果您想查看所有可用选项的完整列表,只需运行:
console$ docker run -it --rm i386/mariadb:latest --verbose --help
启动i386/mariadb镜像时,您可以通过在docker run命令行上传递一个或多个环境变量来调整MariaDB实例的初始化。请注意,除MARIADB_AUTO_UPGRADE外,所有变量在启动容器时如果数据目录已包含数据库,则不会生效。即容器启动时,任何预先存在的数据库都将保持不变。
需要MARIADB_RANDOM_ROOT_PASSWORD、MARIADB_ROOT_PASSWORD_HASH、MARIADB_ROOT_PASSWORD或MARIADB_ALLOW_EMPTY_ROOT_PASSWORD(或等效项,包括*_FILE)中的一个。其他环境变量是可选的。
环境变量列表很长,完整列表记录在MariaDB知识库:MariaDB Server Docker官方镜像环境变量。
MARIADB_AUTO_UPGRADE设置此环境变量时,将在需要时运行mariadb-upgrade,以便进行公开新功能所需的MariaDB系统表的任何更改。这可能会影响某些降级选项。除非设置了环境变量MARIADB_DISABLE_UPGRADE_BACKUP,否则将在数据目录的顶层创建系统表的备份,命名为system_mysql_backup_*.sql.zst,以在需要时协助降级。
作为通过环境变量传递敏感信息的替代方法,可以将_FILE附加到前面列出的环境变量,使初始化脚本从容器中存在的文件加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker密钥加载密码。例如:
console$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb-root -d i386/mariadb:latest
首次启动容器时,将创建具有指定名称的新数据库,并使用提供的配置变量进行初始化。此外,它将执行在/docker-entrypoint-initdb.d中找到的扩展名为.sh、.sql、.sql.gz、.sql.xz和.sql.zst的文件。文件将按字母顺序执行。没有文件执行权限的.sh文件将被源化而不是执行。您可以通过将SQL转储挂载到该目录并提供自定义镜像来轻松填充i386/mariadb服务。SQL文件默认将导入到MARIADB_DATABASE变量指定的数据库中。
重要提示:有多种方法可以存储Docker容器中运行的应用程序使用的数据。我们鼓励i386/mariadb镜像的用户熟悉可用的选项,包括:
Docker文档是了解不同存储选项和变体的良好起点,有多个博客和论坛帖子讨论并提供了这方面的建议。我们在此仅展示上述后一种选项的基本过程:
在主机系统的合适卷上创建数据目录,例如/my/own/datadir。
像这样启动i386/mariadb容器:
console$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql:Z -e MARIADB_ROOT_PASSWORD=my-secret-pw -d i386/mariadb:latest
命令中的-v /my/own/datadir:/var/lib/mysql:Z部分将底层主机系统的/my/own/datadir目录挂载为容器内的/var/lib/mysql,MariaDB默认将在其中写入数据文件。
以下是 i386/mariadb 相关的常用 Docker 镜像,适用于 关系型数据库、MySQL 兼容、高性能 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务