2

我是 docker 的新手,我正面临一个奇怪的错误。

当我跑

docker run --name some-mysql-5 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:latest

其次是

docker exec -ti containerid bash 
mysql -uroot -psecret

mysql 工作正常,我可以创建和填充数据库。

但是当我尝试创建一个持久主机卷以创建一个这样的共享数据库时:

docker run --name some-mysql-4 -v C:\Users\User\Desktop\shared_vol_test:/var/lib/mysql/data -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret mysql:latest

其次是

docker exec -ti containerid bash 
mysql -uroot -psecret

我收到以下错误

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我也尝试以管理员身份运行它,但结果是一样的。

我究竟做错了什么?

我是否以正确的方式创建共享和持久卷?

4

2 回答 2

0

我找到了一种解决方法,方法是在此文件夹中创建卷var/lib/mysql而不是var/lib/mysql/data

我已经按照本指南的第一步 进行了操作,现在已经成功了。

我现在说是因为当我第一次尝试执行mysql -uuser -ppass时并没有通过拒绝我的访问来解决问题,过了一段时间它使用相同的凭据和相同的命令工作,所以我可以创建一个数据库。db 现在出现在我的主机目标目录中,所以也许我找到了解决问题的方法。这里提到了一些关于mysql time to be ready的事情,我猜还有很多我必须理解的行为。

我的帐户名说明了一切:( :)

于 2020-07-25T12:45:24.533 回答
0

/var/run/mysqld不是容器之间的共享文件系统。使用 tcp 端口 3306 进行容器之间的连接或共享/var/run/mysqld

于 2020-07-25T05:31:09.823 回答