2015-08-28 161 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