注意:这是 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 兼容、高性能 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务