Я пытаюсь смонтировать созданную базу данных с хоста, имя mydb, в контейнер mysql, вот что я пробовал:

Я пытаюсь смонтировать созданную базу данных с хоста, имя mydb, в контейнер mysql, вот что я пробовал:

sudo docker run -v mysql-data:/var/lib/mysql/mydb/ --name mysql_web -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -d mysql:5.7

root@ip-172-31-16-134:/var/lib/mysql# sudo docker run -v mysql-data:/var/lib/mysql/mydb/ --name mysql_web -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -d mysql:5.7
3c0a8eb588c0dd0d0b7b72a727912744f44e744e700de7efc64a0c4c1f651685
root@ip-172-31-16-134:/var/lib/mysql# docker exec -it mysql_web bash
Error response from daemon: Container 3c0a8eb588c0dd0d0b7b72a727912744f44e744e700de7efc64a0c4c1f651685 is not running

но это работает, когда я меняю место монтирования…

sudo docker run -v mysql-data:/var/lib/mydb/ --name mysql_web -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -d mysql:5.7

root@ip-172-31-16-134:/var/lib/mysql# sudo docker run -v mysql-data:/var/lib/mydb/ --name mysql_web -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -d mysql:5.7
06233eeb864c32ff16d6542e632a4da3ff6dfbd4a30fcc9aac8086dfc1245948
root@ip-172-31-16-134:/var/lib/mysql# docker exec -it mysql_web bash
root@06233eeb864c:/# cd /var/lib/mydb
root@06233eeb864c:/var/lib/mydb# exit
exit

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

любое предложение поможет, спасибо


65
1

Ответ:

Решено

Это известно как проблема из-за полученной вами ошибки [ERROR] --initialize specified but the data directory has files in it. Aborting.

Что означает эта ошибка, объясняется здесь.

Попробуйте несколько вещей, таких как

  • Добавление --ignore-db-dir=lost+found как уже упоминалось здесь.
  • Предоставление точного пути к каталогу данных на хосте и пути подключения к контейнеру в /var/lib/mysql вот так docker run -v /path/to/mysql-data:/var/lib/mysql --name mysql_web -e MYSQL_ROOT_PASSWORD=12345 -p 3306:3306 -d mysql:5.7 как уже упоминалось здесь.

Надеюсь это поможет.