MySQL на Docker? - PullRequest
       2

MySQL на Docker?

0 голосов
/ 08 февраля 2019

Я новичок в Docker и все еще изучаю, но эта проблема может показаться глупой, но я действительно застрял.

, поэтому у меня есть приложение весеннего бота, которое использует сервер MySQL и я хочу запуститьмое приложение на контейнере.

мне удалось запустить приложение без моего sql.Теперь я следую этому руководству, чтобы установить mysql в контейнер и использовать этот контейнер для запуска моего приложения.

https://medium.com/@itsromiljain/dockerize-rest-spring-boot-application-with-hibernate-having-database-as-mysql-579abcc4edc4

поэтому, когда я запускаю эту команду:

 docker run -p 6603:3306 --name=docker-mysql --env="MYSQL_ROOT_PASSWORD=root" --env="MYSQL_PASSWORD=root" --env="MYSQL_DATABASE=test" mysql

я получаю эту ошибку: enter image description here

Я думаю, потому что у меня установлен и работает MySQL на моей машине, но я не уверен, потому что контейнер должен быть изолирован.

PS: я запускаю Docker на машине с Windows 10, используя Windowsконтейнеры.благодарю вас.РЕДАКТИРОВАТЬ: это текстовый формат ОШИБКИ

2019-02-08T09: 09: 23.467525Z 1 [ОШИБКА] [MY-012574] [InnoDB] Невозможно заблокировать ./ibdata1 ошибка: 952019-02-08T09: 09: 23.468063Z 1 [ОШИБКА] [MY-012592] [InnoDB] Ошибка операционной системы № 95 в операции с файлом.2019-02-08T09: 09: 23.468133Z 1 [ОШИБКА] [MY-012596] [InnoDB] Ошибка с номером 95 означает «Операция не поддерживается» 2019-02-08T09: 09: 23.468193Z 1 [ОШИБКА] [MY-012215][InnoDB] Не удалось открыть файл данных './ibdata1' 2019-02-08T09: 09: 23.468275Z 1 [ОШИБКА] [MY-012959] [InnoDB] Не удалось открыть или создать системное табличное пространство.Если вы попытались добавить новые файлы данных в системное табличное пространство, и это не помогло, вы должны теперь отредактировать innodb_data_file_path в my.cnf обратно в исходное состояние и удалить новые файлы ibdata InnoDB, созданные в этой неудачной попытке.InnoDB только записывал файлы, полные нулей, но пока не использовал их.Но будьте осторожны: не удаляйте старые файлы данных, которые содержат ваши драгоценные данные!2019-02-08T09: 09: 23.468387Z 1 [ОШИБКА] [MY-012929] [InnoDB] Создание базы данных InnoDB было прервано с ошибкой Не удается открыть файл.Возможно, вам придется удалить файл ibdata1, прежде чем пытаться запустить снова.2019-02-08T09: 09: 24.070144Z 0 [ОШИБКА] [MY-010020] Ошибка инициализации словаря данных [Сервер].2019-02-08T09: 09: 24.070172Z 0 [ОШИБКА] [MY-013236] [Сервер] Недавно созданный каталог данных / var / lib / mysql / непригоден для использования.Вы можете безопасно удалить его.2019-02-08T09: 09: 24.070759Z 0 [ОШИБКА] [MY-010119] [Сервер] прерывается 2019-02-08T09: 09: 24.072260Z 0 [Система] [MY-010910] [Сервер] / usr / sbin /mysqld: завершение работы (mysqld 8.0.15) MySQL Community Server - GPL.

Ответы [ 2 ]

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

На случай, если у кого-то возникла такая же проблема.Переключение обратно на Linux Containers решило проблему для меня.

0 голосов
/ 08 февраля 2019

Прежде всего: выполнение точной команды docker на моем компьютере с Ubuntu Linux без проблем запускает mysql в контейнере.

Но, конечно, это вам не поможет, поэтому давайте посмотрим на вашу проблему:

Эта проблема не должна быть связана с экземпляром mysql, работающим на вашем локальном компьютере, поскольку, как вы заявили, приложение внутри контейнера Docker изолировано от хост-компьютера.

Похоже, что этопроблема с хранением.По какой-то причине приложение mysql внутри контейнера Docker не может использовать свойство / var / lib / mysql (также внутри контейнера Docker. В сообщении об ошибке четко говорится следующее:

... data directory /var / lib / mysql непригоден для использования.

Это может быть либо проблема с самой установкой вашего докера, либо проблема с образом, либо проблема с настройкой mysql внутри контейнера.Я бы сказал, что это маловероятно, потому что образ mysql docker широко используется и считается достаточно стабильным. Последний вариант всегда возможен, но, учитывая, что вы не сильно отличаетесь от примеров на странице концентратора докеров, и я могучтобы выполнить точную команду на моем компьютере, я склонен винить первый вариант.

Вы пытались предоставить образ с томом докера (см. https://docs.docker.com/storage/ для глобальной ссылки)

Простейшим типом управляет docker, и он добавляется в команду docker следующим образом:

-v mysql_data:/var/lib/mysql

Ваш комЗатем мандат становится:

docker run -v mysql_data:/var/lib/mysql -p 6603:3306 --name=docker-mysql --env="MYSQL_ROOT_PASSWORD=root" --env="MYSQL_PASSWORD=root" --env="MYSQL_DATABASE=test"  mysql

Если вы хотите смонтировать его в каталог на вашем хост-компьютере, используйте этот аргумент:

-v <local path>:/var/lib/mysql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...