将运行PHP的Docker容器连接到主机(VirtualBox上的ubuntu)MSQL服务器

时间:2016-12-02 08:50:03

标签: mysql ubuntu docker virtualbox docker-container

使用Ubuntu 16.04运行VirtualBox,我有一个安装了Apache2和PHP的Docker容器。

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

我正在尝试从docker容器

访问主机上的MYSQL服务器
<?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();
}

&GT;

我收到连接拒绝通知。

启动容器时我试过

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

哪个不起作用,因为MYSQL服务器在主机上使用端口3306,如果我在主机上停止MYSQL服务器,则执行docker run命令但是我无法在主机上启动MYSQL服务

我也试过

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

并相应地更改了/etc/mysql/mysql.conf.d/mysqld.cnf中的绑定地址

仍然没有运气

由于

1 个答案:

答案 0 :(得分:1)

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

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

然后,您可以使用localhost引用您的数据库:

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

你也可以使用--net =&#34; bridge&#34;选项,默认情况下,而不是&#34; host&#34;,但在这种情况下,您需要找出您的主机的IP,并配置Mysql以收听文件中的容器的IP my.cnf:

bind-address = x.y.z.u

其中x.y.z.u是您的容器的IP。