docker工人运行mysql客户端运行mysql容器

我只是进入docker,并有一个简单的MySQL 5.5设置使用官方形象 。 这是我的相关文件。

#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) 

现在在另一个terminal上运行docker-compose run db bash并进入bash shell。 但在这个shell中,如果我尝试连接mysql客户端,我得到一个错误。

 root@94a43b1f5be0:/# mysql -u root -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

同样的事情与普通的老docker工作。 示例(使用相同的Docker文件):

 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 root@8408282d162f:/# mysql -u root -p mysql> 

我在做什么CodeGo.net,错误的docker组成。 我如何连接到我的运行的MySQL容器,并引发一些疑问。 任何帮助,将不胜感激。

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

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

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