Панель инструментов Docker с проблемой контейнера MySQL в Windows 10 Home (и Pro) - PullRequest
0 голосов
/ 25 декабря 2018

Я не могу запустить контейнеры MySQL, созданные из образов MySQL, с томами базы данных, сопоставленными с папкой моего хоста.

Не имеет значения, является ли папка хоста пустой или с существующими файлами базы данных.Я знаю, что Docker Toolbox может монтировать тома в Windows только из c: \ Users \, поэтому моя тестовая папка находится в этой папке.

Я пробовал разные (официальные и нет) образы MySQL от 5.5 до последних безрезультат.В любое время, когда расположение / var / lib / mysql в контейнере указывает на папку на моем хост-компьютере (c: \ Users \ someuser \ testfolder), у меня возникает ошибка при запуске контейнера с ошибкой InnoDB ("InnoDB: Операционная системаошибка 22 в файловой операции "или" InnoDB: File ./ib_logfile0: 'aio write' вернула ошибку ОС 122 ").

Я пытался изменить /etc/my.cnf контейнера mysql (в [раздел mysqld], используя команду «docker cp») добавляя «innodb_use_native_aio = OFF» или (иногда даже и) «innodb_use_native_aio = 0» ключи и даже пытался запустить «docker run» с «--user 1000: 50» безлибо результат.

Сразу после того, как я удаляю точку монтирования из контейнера / var / lib / mysql в папку хоста, контейнер работает нормально.

Есть много похожих вопросов, но ни у кого нет завершенного шагаПошаговое решение, как запустить контейнер MySQL с Docker Toolbox под Windows 10 (Home & Pro), чтобы обеспечить работу контейнера с существующей базой данных на томах хоста.

1 Ответ

0 голосов
/ 10 января 2019

Мне потребовалось некоторое время, чтобы получить ответ, но в конце концов все заработало!Для тех, кто не знаком с Docker и имеет проблемы с монтированием папки MySQL на хост, здесь есть краткое руководство.Обратите внимание, что я выбрал изображение bitnami / mysql для своих экспериментов (для других изображений папки могут отличаться).

  1. Создайте папку c:\Users\[YourAccount]\MySQLData для данных MySQL.
  2. Создайте папку c:\Users\[YourAccount]\MySQLConf для пользовательского файла конфигурации MySQL.
  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

Ура!

...