Docker 无法通过套接字连接到本地 MySQL 服务器

Docker can't connect to local MySQL server through socket

我是 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)

我也试过 运行 它作为管理员,但结果是一样的。

我做错了什么?

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

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

我通过在此文件夹 var/lib/mysql 而不是 var/lib/mysql/data

中创建卷找到了解决方法

我已经按照 this guide 的第一个步骤进行操作,现在已经成功了。

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

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