我尝试从名为 mydb 的主机将创建的数据库挂载到 mysql 容器中,这是我尝试过的:

I try to mount a created database from host, name mydb, onto mysql container here is what I’ve tried:

我尝试从名为 mydb 的主机安装一个已创建的数据库到 mysql 容器中,这是我尝试过的:

sudo docker 运行 -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 运行 -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我启动一个新容器。

任何建议都会有所帮助,谢谢

这是已知的 issue 因为您遇到的错误 [ERROR] --initialize specified but the data directory has files in it. Aborting.

解释了此错误的含义 here

尝试一些类似

的事情
  • 如前所述添加 --ignore-db-dir=lost+found here
  • 提供主机上数据目录的确切路径,并像这样 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 挂载到 /var/lib/mysql 的容器路径,如前所述 here

希望对您有所帮助。