(这可能是一个愚蠢的问题,因为我对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’.