Docker:MariaDB / MySQL启动在Windows主机上失败

我正在尝试使用官方的mariadb docker图像以及php-fpm和nginx来运行我的Symfony 2应用程序。

这个想法是保持所有的数据库文件在一个安装的文件夹。 虽然在Mac OS上它工作得很好 – 在Windows机器上,每次MariaDB尝试启动时都会收到错误。 奇怪的部分是,它实际上能够创build一些文件 – 我可以看到ibdata1文件,但它的大小是0字节。 还有两个aria_log文件,其中包含几KB的数据,这意味着mysql实际上可以在那里写入。

  • 我正在使用docker for windows 1.12.2 beta 。 但也尝试了稳定的。
  • 我正在存储项目的Windows磁盘是共享的(通过Docker for Windows UI的“共享驱动器”部分)
  • 目录是100%可写的,因为nginx甚至MySQL本身都能够把他们的日志在那里
  • 我完全不是“磁盘空间不足”,因为日志build议

这是我的docker-compose文件:

 version: '2' services: db: image: mariadb ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test MYSQL_USER: root MYSQL_PASSWORD: root volumes: - ./docker-runtime/mysql:/var/lib/mysql php: build: ./docker/php-fpm volumes: - ./:/var/www/symfony - ./docker-runtime/logs/symfony:/var/www/symfony/app/logs links: - db nginx: build: ./docker/nginx ports: - "80:80" links: - php volumes_from: - php volumes: - ./docker-runtime/logs/nginx/:/var/log/nginx 

以下是我在做docker-compose up时写的日志:

 db_1 | 2016-10-18 13:14:06 7f79eed7f7c0 InnoDB: Error: Write to file ./ibdata1 failed at offset 0. db_1 | InnoDB: 1048576 bytes should have been written, only 0 were written. db_1 | InnoDB: Operating system error number 22. db_1 | InnoDB: Check that your OS and file system support files of this size. db_1 | InnoDB: Check also that the disk is not full or a disk quota exceeded. db_1 | InnoDB: Error number 22 means 'Invalid argument'. db_1 | InnoDB: Some operating system error numbers are described at db_1 | InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] InnoDB: Error in creating ./ibdata1: probably out of disk space db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] Plugin 'InnoDB' init function returned error. db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] Unknown/unsupported storage engine: InnoDB db_1 | 2016-10-18 13:14:06 140161674901440 [ERROR] Aborting 

对于这个问题,我真的很感激,因为我现在正在把我的头发拉出来

可能你有权限问题。 要放弃更改您的docker-compose.yml以使用命名卷:

 version: '2' services: db: image: mariadb ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: test MYSQL_USER: root MYSQL_PASSWORD: root volumes: - mysql:/var/lib/mysql php: build: ./docker/php-fpm volumes: - ./:/var/www/symfony - ./docker-runtime/logs/symfony:/var/www/symfony/app/logs links: - db nginx: build: ./docker/nginx ports: - "80:80" links: - php volumes_from: - php volumes: - ./docker-runtime/logs/nginx/:/var/log/nginx volumes: mysql: 

尝试看看是否mysql错误消失。

问候