连接docker中的mysql_从主机连接到docker容器中的mysql

(这可能是一个愚蠢的问题,因为我对Docker或mysql管理的知识有限,但是因为我在这个问题上度过了整整一个晚上,所以我敢问它.)

简而言之

我想在docker容器中运行mysql并从我的主机连接到它.到目前为止,我所取得的成就是最好的

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

更多细节

我正在使用以下Dockerfile

FROM ubuntu:14.04.3

RUN apt-get update && apt-get install -y mysql-server

# Ensure we won't bind to localhost only

RUN grep -v bind-address /etc/mysql/my.cnf > temp.txt \

&& mv temp.txt /etc/mysql/my.cnf

# It doesn't seem needed since I'll use -p, but it can't hurt

EXPOSE 3306

CMD /etc/init.d/mysql start && tail -F /var/log/mysql.log

在有这个文件的目录中,我可以成功构建映像并运行它

> docker build -t my-image .

> docker run -d -p 12345:3306 my-image

当我附加到图像时,它似乎工作得很好:

# from the host

> docker exec -it bash

#inside of the container now

$mysql -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

[...]

但是我没有从主持人那里获得那么多成功:

> mysql -P 12345 -uroot

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

更多细节

>我已经看到有一个问题是looks like mine.然而,它实际上并不相同(并且它无论如何都没有任何答案)

>我已经看到有图像dedicated to mysql,但我没有取得更多的成功

>我的grep -v可能会觉得很奇怪.不可否认,可能有更清洁的方法.但是,当我附加到我的图像时,我可以观察到它实际上按预期工作(即:删除了绑定地址).我可以在容器/var/log/mysql/error.log中看到

Server hostname (bind-address): ‘0.0.0.0’; port: 3306

– ‘0.0.0.0’ resolves to ‘0.0.0.0’;

Server socket created on IP: ‘0.0.0.0’.


版权声明:本文为weixin_42109598原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。