2016-12-02 62 views
0

运行VirtualBox和Ubuntu 16.04,其中我有一个安装了Apache2和PHP的Docker容器。将运行PHP的Docker容器连接到主机(在VirtualBox上的Ubuntu)MSQL服务器

MYSQL安装在主机上(在VirtualBox上的Ubuntu上)。

我试图从泊坞窗容器

<?php 
$host = '192.168.136.101'; 
$user = 'root'; 
$pass = '****'; 
$db = 'test'; 
$port = '3306'; 

$con = mysqli_connect($host,$user,$pass,$db,$port); 

// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

?>

我得到一个连接被拒绝的通知访问主机上的MySQL服务器。

开始我试图

docker run -ti -p 80:80 -p 3306:3306 IMAGE 

容器哪些不为3306端口工作正在使用的MySQL服务器主机,当,如果我停止主机MySQL服务器泊坞窗运行命令但是我执行那么无法在主机

我也曾尝试

docker run -ti -p 80:80 --add-host=database:192.168.136.101 IMAGE 

和/etc/mysql/mysql.conf.d/mysqld.cnf改变了绑定地址accordin启动mysql服务甘氨酸

仍然没有运气

感谢

+1

下面的文章可能会有所帮助。 http://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach – Yuva

回答

1

您需要使用主机网络中运行的容器中时:

docker run -ti -p 80:80 --net="host" IMAGE 

然后,您可以用本地主机引用您的数据库:

<?php 
$host = '127.0.0.1'; 
$user = 'root'; 
$pass = '****'; 
$db = 'test'; 
$port = '3306'; 

您也可以使用--net =“bridge”选项,其中默认T,而不是“主”,但在这种情况下,你需要找出你的主机的IP,并配置MySQL听在文件my.cnf中容器的IP:

bind-address = x.y.z.u 

其中xyzu是你的容器的IP 。

+0

当绑定容器的IP地址到my.cnf的绑定地址MYSQL服务器不会开始给出错误通知 'mysql.service的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参见“systemctl status mysql.service”和“journalctl -xe” – succeed

+0

对不起,它确实有效! 从主机输入 sudo ip addr show docker0 – succeed

+0

而之前我使用从ifconfig获取的IP地址从容器运行时 – succeed

相关问题