在主机访问到主机到容器的MySQL
我创build了这样的容器:
$ docker run -d -p 33060:3306 myimage
然后我尝试从主机连接到容器中的MySQL服务器:
$ mysql -uroot -proot -P 33060
我得到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
这很奇怪,因为在Navicat只有我改变了港口,工作正常:
但是,如果我有容器的IP:
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mycontainer 172.17.0.55
然后我可以成功连接到mysql服务器:
$ mysql -uroot -proot -h 172.17.0.55
但是每次创build一个连接到mysql的新容器时,都需要检查ip是一个单调乏味的任务。 有任何设置,我可以做这个任务更简单?
这不是一个Docker问题。 默认情况下,即使指定了-P
, mysql
命令行客户端也将连接到本地(Unix)套接字而不是networking套接字。
文档中描述了这种行为:
在Unix上,MySQL程序专门处理主机名localhost,与其他基于networking的程序相比,这种方式可能与您期望的不同。 对于连接到本地主机,MySQL程序试图通过使用Unix套接字文件连接到本地服务器。 即使给出了–port或-P选项,也会发生这种情况
您必须通过-hlocalhost
选项,或者您可以在-hlocalhost
中设置连接默认值
- 运行docker映像时如何覆盖默认命令
- Kubernetes:除了一个,Docker pod启动失败
- 在终止整个实例之后,Consul代理仍然被标记为临界状态
- Docker / Alpine和Ubuntu中的ImageFont不同
- Docker:Swarm worker节点没有find本地构build的映像
- Dockerfile中的命令数
- /var/run/docker.sock:在Python CGI脚本中运行docker时拒绝了权限
- docker – 编写postgresql错误,chown:更改'/ var / lib / postgresql / data'的所有权:操作不允许
- 如何解决cadvisor错误`devicemapper文件系统统计不会被报告?