2017-01-30 98 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

相关问题