在docker容器內訪問宿主機的mysql服務

2021-09-03 07:58:29 字數 570 閱讀 5249

1)mysql在宿主機預設監聽位址為127.0.0.1的3306埠監聽;

2)當在docker容器內部執行ifconfig後,會獲得*.*.*.2,這個ip位址,在宿主機上執行ifconfig,會有docker0這個網橋,宿主機和docker容器就是通過這個docker0網橋進行通訊的,宿主機在此網橋上的ip位址為*.*.*.1,和上述的*.*.*.2只是最後乙個數字不同;

3)首先在docker容器內通過telnet *.*.*.1 3306 發現拒絕連線,猜測可能是由於mysql監聽的位址單純的為127.0.0.1,解決方法:在/etc目錄下找到mysql的配置檔案,這個配置檔案具體位置因人而異吧,但是一定是在某個mysql相關資料夾下,並且此配置檔案中帶有"bind-address="這個字眼,並使得這個位址為0.0.0.0,如果沒有找到,則在配置資料夾下找到[mysqld],加上bind-address=0.0.0.0;

4)重啟服務:

service mysqld restart

5)驗證:

netstat -tln

6)在docker容器內執行telnet *.*.*.1 3306,此時就可以連通了

docker容器內訪問宿主機的資源

我們經常會在容器內訪問宿主機的資源 比如 nginx容器反向 其他容器或者宿主機的應用 如果nginx在容器內,方向 宿主機的應用,直接使用127.0.0.1 或者localhost是有問題的,因為宿主機的網路和容器網路不通 解決辦法 在linux下使用docker0網路,把127.0.0.1改為d...

docker宿主機訪問docker容器服務失敗

原因 因為docker的虛擬ip網段是172.17.與區域網的ip網段172.17衝突了,所以有兩種方式 解決方法 一 修改docker網絡卡資訊,將網段改為與區域網不同的即可 linux修改方法 第一步 刪除原有配置 sudo service docker stop sudo ip link se...

Docker容器訪問宿主機網路

業務請求量小的時候,我們會把一些工程部署到同一臺機器上。這些工程之間也會相互訪問。如果是http的介面,我們最方便的是使用localhost帶地本機的ip。不過結合docker容器後出現了問題。docker容器中localhost表示容器的ip位址。不是宿主機ip。其實docker容器執行的時候有h...