Windows 10 Home(和Pro)上带有mysql容器问题的Docker工具箱

时间:2018-12-24 21:19:27

标签: mysql docker innodb docker-toolbox

我无法运行将数据库卷映射到主机文件夹的MySQL映像制成的MySQL容器。

主机文件夹为空或现有数据库文件都没有关系。我确实知道Docker Toolbox只能从c:\ Users \在Windows上安装卷,因此我的测试文件夹在该文件夹下。

我正在尝试从5.5到最新版本使用不同的(官方的和非官方的)MySQL映像,但没有结果。每当容器中的/ var / lib / mysql位置指向我的主机上的文件夹(c:\ Users \ someuser \ testfolder)时,我在运行InnoDB错误的容器中遇到错误(“ InnoDB:操作系统文件操作中出现错误号22”或“ InnoDB:文件./ib_logfile0:'aio write'返回操作系统错误122”)。

我试图修改mysql容器的/etc/my.cnf(在[mysqld]部分下,使用“ docker cp”命令),添加“ innodb_use_native_aio = OFF”或(有时甚至)“ innodb_use_native_aio = 0”键,甚至试图用“ --user 1000:50”运行“ docker run”,也没有结果。

就在我将容器的/ var / lib / mysql的挂载点删除到我的主机文件夹之后,容器才能正常运行。

有很多类似的问题,但是没有一个完整的分步解决方案,如何在Windows 10(家庭和专业版)下使用Docker工具箱运行MySQL容器,以使容器与主机卷上的现有数据库一起工作。

1 个答案:

答案 0 :(得分:0)

我花了一段时间才得到答案,但最终一切正常!对于那些不熟悉Docker并在将MySQL文件夹安装到主机上遇到问题的人来说,这是一个简短的指南。请注意,我为实验选择了bitnami / mysql映像(其他映像文件夹可能有所不同)。

  1. 为MySQL数据创建一个文件夹c:\Users\[YourAccount]\MySQLData
  2. 为自定义MySQL配置文件创建一个文件夹c:\Users\[YourAccount]\MySQLConf
  3. 创建自定义MySQL配置文件c:\Users\[YourAccount]\MySQLConf\my_custom.cnf,并在其中添加两行:
[mysqld]
innodb_use_native_aio=0
4.现在创建并运行将您的自定义配置和数据文件夹安装到其中的容器:
docker run -d --name mysql -e ALLOW_EMPTY_PASSWORD="yes" \
-v //c/Users/[YourAccount]/MySQLData:/bitnami/mysql/data \
-v //c/Users/[YourAccount]/MySQLConf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \ bitnami/mysql:latest

万岁!