我正在尝试在 Docker 容器中为数据库安装本地文件系统。
正如官方存储库https://hub.docker.com/_/mariadb中的说明所写:
使用自定义 MariaDB 配置文件 启动配置在文件 /etc/mysql/my.cnf 中指定,该文件又包含 /etc/mysql/conf.d 目录中以 .cnf 结尾的所有文件。此目录中的文件中的设置将增加和/或覆盖 /etc/mysql/my.cnf 中的设置。如果您想使用自定义的 MariaDB 配置,您可以在主机上的目录中创建替代配置文件,然后将该目录位置挂载为 mariadb 容器内的 /etc/mysql/conf.d。
如果 /my/custom/config-file.cnf 是你的自定义配置文件的路径和名称,你可以像这样启动你的 mariadb 容器(注意这个命令只使用了自定义配置文件的目录路径):
$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
参考这条指令,在我的项目的根目录下,我创建了数据库目录,并在 docker-compose 文件中写了以下内容:
db:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: 111111
volumes:
- ./databases:/var/lib/mysql
之后,我运行命令:
docker-compose up
我收到以下消息:
创建 docker-proj_adminer_1 ... 完成 创建 docker-proj_db_1
... 完成 附加到 docker-proj_db_1、docker-proj_adminer_1 db_1
| 2021-06-27 17:15:02+00:00 [Note] [Entrypoint]: MariaDB Server 1:10.5.11+maria~focal 的入口点脚本已启动。db_1 | 2021-06-27 17:15:02+00:00 [注意] [入口点]:切换到专用用户 'mysql' db_1 | 2021-06-27 17:15:02+00:00 [Note] [Entrypoint]: MariaDB Server 1:10.5.11+maria~focal 的入口点脚本已启动。db_1 | 2021-06-27 17:15:03+00:00 [注意] [入口点]:初始化数据库文件 db_1 | 2021-06-27 17:15:18 0 [错误] InnoDB:文件操作中的操作系统错误号 22。db_1
| 2021-06-27 17:15:18 0 [错误] InnoDB:错误号 22 表示“无效参数”db_1 | 2021-06-27 17:15:18 0 [错误] InnoDB:文件 ./ibdata1:“aio write”返回操作系统错误 222。无法继续操作 db_1 | 210627 17:15:18 [错误] mysqld 收到信号 6;db_1 | 这可能是因为您遇到了错误。也有可能这个二进制 db_1 | 或者它所链接的库之一已损坏,构建不正确,db_1 | 或配置错误。此错误也可能是由硬件故障引起的。
同时,我想指出,如果我执行相同的命令但没有挂载文件系统,那么一切都很好。
请告诉我,我的错误是什么,我做错了什么?