У меня очень странная ситуация.Когда я запускаю контейнер mariaDB, используя один каталог, он застревает в «Инициализации базы данных»:
$ docker run --name some-mariadb -v /mnt/data/msb/newsystem/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mariadb:10.3
Initializing database
Он остается там навсегда, он не движется вперед и не умирает.Обратите внимание, что / mnt / data монтирует / dev / sdb1, который хотя и является другим жестким диском, но находится на том же компьютере и не является съемным носителем или чем-то еще.Я не знаю, связано ли это, это не имеет смысла для меня.
Если, с другой стороны, я запускаю его на другом каталоге, все работает:
$ docker run --name some-mariadb -v /home/msb/work/tmpdb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mariadb:10.3
Initializing database
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
....
Это работает довольно быстро, в течение нескольких секунд.Насколько я мог проверить, оба директора имеют одного и того же владельца и разрешения.Мой вопрос: почему он висит в первом случае?Как я могу это отладить?
Я новичок в докере и в mariaDB, хотя и не новичок в mysql.Я смог заставить его работать, используя нужный мне каталог, выполнив следующие действия:
- создать контейнер в каталоге, который работает
- остановить контейнер (закрыть базу данных)
- скопировать все файлы из каталога, который я не хочу использовать, в каталог, который я хочу использовать (очевидно, с сохранением разрешений и атрибутов)
- удалить контейнер
- создайте новый контейнер, используя каталог, который я хочу использовать
Поскольку БД уже была инициализирована, все работало нормально, она запускала БД, как если бы она не была новой.Но меня очень заинтриговало, почему это не сработало сразу с использованием нужного каталога, и я верю, что понимание поможет мне понять, как работает докер.