2016-12-02 38 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

相關問題