使用Ubuntu 16.04运行虚拟盒,我的Docker容器已安装了Apache2和PHP。
MySQL安装在主机上(VirtualBox上的Ubuntu)。
我正在尝试从Docker容器访问主机上的MySQL Server
<?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();
}
?>
我收到连接拒绝通知。
启动容器时,我尝试了
docker run -ti -p 80:80 -p 3306:3306 IMAGE
mysql Server在主机上使用端口3306不起作用,如果我在主机上停止MySQL Server,则Docker Run命令执行执行,但是我将无法在主机上启动MySQL服务
我也尝试了
docker run -ti -p 80:80 --add-host=database:192.168.136.101 IMAGE
并更改了/etc/mysql/mysql.conf.d/mysqld.cnf中的绑定地址
仍然没有运气
谢谢
运行容器时需要使用主机网络:
docker run -ti -p 80:80 --net="host" IMAGE
然后,您可以使用Localhost引用数据库:
<?php
$host = '127.0.0.1';
$user = 'root';
$pass = '****';
$db = 'test';
$port = '3306';
您还可以使用-net =" bridge"选项,默认值,而不是"主机",但是在这种情况下,您需要找出主机的IP,并配置mysql以在in in in in mysql文件my.cnf:
bind-address = x.y.z.u
其中X.Y.Z.U是您的容器的IP。