2017-01-30 142 views
0

我有一個網絡:碼頭工人。從一個容器連接到另一個容器與MySQL

docker network create -d bridge --subnet 172.25.0.0/16 container_network 

我有mysql的運行一個容器。運行命令:

docker run -tid -p 3306:3306 --name container_mysql --network container_network container_mysql 

而且一個與代碼容器:

docker run -tid -v $(pwd):/code -p 5000:5000 --name container_code --network container_network container_code 

我想從我的容器訪問MySQL數據庫的代碼,但沒有任何工程:

mysql -h 172.17.0.1 -P 3306 -u root -p 
mysql -h container_mysql -P 3306 -u root -p 
mysql -h 127.0.0.1 -P 3306 -u root -p 
mysql -h 0.0.0.0 -P 3306 -u root -p 

第一個命令給me:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 

Ot她的:

ERROR 2003 (HY000): Can't connect to MySQL server on <host> (111) 

任何想法如何實現目標?

編輯1 Dockerfile對於MySQL容器:

所有的
FROM ubuntu:16.04 
RUN apt-get update 
RUN echo "mysql-server mysql-server/root_password password 1234" | debconf-set-selections 
RUN echo "mysql-server mysql-server/root_password_again password 1234" | debconf-set-selections 
RUN apt-get install mysql-server -y 
+1

您是否嘗試過使用docker-compose? – Manuel

+0

是的。在我看來,連接一切都有更多的麻煩。 – Snobby

回答

0

首先,你應該考慮使用networks insted的鏈接。首先,link應該很快被棄用。其次,當您將2個容器放在同一個網絡中時,docker會將兩個容器的/etc/hosts添加到一個用於從容器名稱中解析IP的行。這是爲了讓您可以使用他們的名字訪問容器。你的情況,你可以從代碼容器訪問MySQL容器這樣
mysql -h container_mysql

this linkdocker networking更多細節。 This link有關更多信息docker-compose和網絡。

+0

我已經試過'mysql -h container_mysql -P 3306 -u root -p'。它沒有工作。更新了碼頭網絡的問題。 – Snobby

+0

它在容器上啓動mysql嗎? –

+0

Yep'嘗試連接之前啓動MySQL數據庫服務器mysqld ... done.' – Snobby

相關問題