mysql - 无法从 Docker 容器连接到主机 MySQL 数据库
问题描述
我安装了最新的 Docker CS,从 Docker Hub获得了一个LAMP 容器。它运行 MySQL (MariaDB) 服务器和 Apache 服务器。我需要它的 MySQL 服务器与位于主机上的数据库一起工作(或者,或者,在一个单独的 docker 值上创建一个数据库并使用它,我猜)。
说明说启动容器为docker run -d -p [HOST WWW PORT NUMBER]:80 -p [HOST DB PORT NUMBER]:3306 -v [HOST WWW DOCUMENT ROOT]:/var/www/html -v [HOST DB DOCUMENT ROOT]:/var/lib/mysql fauria/lamp
我不确定是什么[HOST DB DOCUMENT ROOT]
——它是托管 mysql 数据库的位置吗?或者它是容器中的数据库服务器将数据写入的主机上的任何位置?
我运行它docker run --name mycontainer --rm -p 80:80 -e LOG_STDOUT=true -e LOG_STDERR=true -e LOG_LEVEL=debug -v /home/username/dev/appname/www:/var/www/html -v /home/username/dev/appname/wwwdb:/var/lib/mysql fauria/lamp
这里/home/username/dev/appname/wwwdb
只是我创建的一个空目录。我还绑定/var/lib/mysql/
了我从select @@datadir;
主机 MariaDB 安装中获得的内容。结果相同。
然后我连接到 container:docker exec -i -t mycontainer bash
并运行mysql -u root
. 我得到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")
我确定我做的不对,但不确定是什么。
解决方案
推荐阅读
- javascript - TypeScript - 遍历字典类型中的类型并创建具有转换值的类型
- javascript - 如何使用条件“if”(JavaScript)在一定距离后使 div 消失
- c# - 将变量设置为函数的返回值,在该变量上运行。C#
- python - Chrome Saml 面板和 Python Flask Web 应用程序未显示 Saml 请求/响应
- amazon-web-services - CloudFront 的缓存重定向,但传递唯一的查询字符串参数
- apache-spark - Spark比较具有不同数据类型的数据帧之间的列值
- node.js - EACCES:在 Dockerfile 中添加用户时权限被拒绝
- arrays - 访问在 C 中作为指针返回的 2D 数组
- node.js - VirusTotal 上传文件
- python - 当一行中遇到特殊字符时,在数据框中添加行