2015-08-28 155 views
0

我刚刚进入码头工并使用the official image设置了一个简单的mysql 5.5。这是我的相关文件。码头工人运行mysql客户端运行mysql容器

#Dockerfile 
FROM mysql:5.5                                
ENV MYSQL_ROOT_PASSWORD password 

#docker-compose.yml 
db:                                   
    build: . 

现在我跑docker-compose build其次docker-compose up 这给下面的输出

db_1 | 150828 14:04:17 [Note] mysqld: ready for connections. 
db_1 | Version: '5.5.45' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server (GPL) 

现在,在另一端我跑docker-compose run db bash和进入的bash shell。但在这个shell中,如果我尝试连接mysql客户端,则会出现错误。

[email protected]:/# mysql -u root -p 

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

同样的事情适用于普通的老码头。 实例(使用相同的泊坞窗文件):

docker build -t my-new-image . 
docker run --name my-new-image-container -d my-new-image 
docker exec -it my-new-image-container bash 
[email protected]:/# mysql -u root -p 
mysql> 

我在做什么毛病泊坞窗 - 撰写。我如何连接到我的运行mysql容器并引发一些查询。任何帮助,将不胜感激。

回答

2

使用docker-compose run实际上启动了一个新的容器,而不是连接到现有的容器。在这种情况下,你用bash覆盖了命令,所以mysql服务器还没有启动。

你可以做的只是将docker exec放入由​​给出的容器中。

顺便说一句,你不需要在这里建立自己的形象;你可以在docker-compose.yml的环境变量中设置密码。这也有不将密码烘焙到图像中的优点。

+0

嗯......这很有道理..感谢您的快速反应 – akotian