Docker如何訪問到宿主機MYSQL的實現(xiàn)方法
一、說明
使用 Docker 能實現(xiàn)服務(wù)的容器化,并使用容器間網(wǎng)絡(luò)在它們之間進行通信。有時您可能需要一個容器來與宿主機上非容器化的服務(wù)通信。以下是如何從 Docker 容器中訪問本地主機或 127.0.0.1的具體方法。
二、方法1:簡單的選擇
適用于 Windows 和 Mac 的 Docker Desktop 18.03+ 支持 host.docker.internal 作為 localhost 的功能別名。在您的容器中使用此字符串來訪問您的主機。注意,這里區(qū)分實體的辦法
| 指定通信個體 | 別名 |
|---|---|
| 解釋成容器 | localhost或127.0.0.1 |
| 解釋成主機 | host.docker.internal |
比如,您在主機上運行 MySQL 服務(wù)器,Docker 容器可以通過網(wǎng)絡(luò)訪問連接到主機的mysql 具體名為host.docker.internal:3306 。當您在 Windows 或 Mac 計算機上工作時,這是最簡單的技術(shù)。
Linux 上的 Docker 引擎用戶也可以通過 docker run 的 --add-host 標志啟用主機的默認名稱 host.docker.internal。使用此標志啟動容器以公開主機字符串:
展例:
docker run -d --add-host host.docker.internal:host-gateway -p 80:80 -p 443:443 dzq:latest
使用(連接宿主機數(shù)據(jù)庫):host.docker.internal:3306
--add-host 標志向容器的 /etc/hosts 文件添加一個條目。上面顯示的值將 host.docker.internal 映射到容器的主機網(wǎng)關(guān),這與真實的 localhost 值相匹配。如果您愿意,可以用您的主機真實名稱替換 host.docker.internal 。
方法2:連接到主機網(wǎng)絡(luò)
Docker 提供了一個主機網(wǎng)絡(luò),讓容器可以共享主機的網(wǎng)絡(luò)堆棧。這種方法意味著容器內(nèi)的本地主機解析為物理主機,而不是容器本身。
通過添加 --network=host 標志與主機網(wǎng)絡(luò)一起啟動容器:
docker run -d --network=host my-container:latest
現(xiàn)在您的容器可以直接引用本地主機或 127.0.0.1。
如果您使用的是 Docker Compose,請修改容器的服務(wù)定義以包含 network_mode 字段:
services:my-service:network_mode: host
這種方法有幾個注意事項。在使用它之前考慮所有的影響很重要。容器通常會獲得自己的私有網(wǎng)絡(luò),該網(wǎng)絡(luò)獨立于主機的堆棧。來自主機的設(shè)置。
容器公開的任何端口都將在主機上公開,即使它們沒有使用 -p 標志明確聲明。
主機網(wǎng)絡(luò)可能是一個安全問題,它打破了 Docker 容器的隔離模型。在您確信正在運行的容器不會相互沖突或?qū)е轮鳈C環(huán)境出現(xiàn)問題的情況下,它仍然很有用。主機網(wǎng)絡(luò)模式也比默認橋接模式更快,因為沒有供流量通過的虛擬化層。
方法3:使用默認橋接模式訪問主機
您的主機仍然可以在默認橋接網(wǎng)絡(luò)模式下從容器訪問。您只需要通過其 Docker 網(wǎng)絡(luò) IP 引用它,而不是 localhost 或 127.0.0.1。
大多數(shù) Docker 引擎安裝會將主機表示為默認 docker0 橋接網(wǎng)絡(luò)上的 172.17.0.1。您可以通過在主機上運行以下命令來檢查自己的 IP:
ip addr show docker0
您的主機的 Docker IP 將顯示在 inet 行上。從您的容器中連接到此 IP 地址以成功訪問在您的主機上運行的服務(wù)。

這種方法的一個缺陷是您可能無法連接到直接綁定到本地主機的服務(wù)。您會在容器中看到連接被拒絕或類似錯誤。
到此這篇關(guān)于Docker如何訪問到宿主機MYSQL的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker訪問到宿主機MYSQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker CMD/ENTRYPOINT執(zhí)行sh腳本報: not found/run.sh:
這篇文章主要介紹了解決docker CMD/ENTRYPOINT執(zhí)行sh腳本報: not found/run.sh:的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
docker?compose部署mongodb?分片集群的操作方法
分片機制(Sharding)是MongoDB中用于處理大規(guī)模數(shù)據(jù)集和高負載應(yīng)用的一種數(shù)據(jù)分布策略,通過將數(shù)據(jù)均勻分布在多個服務(wù)器上,分片技術(shù)能夠提高應(yīng)用的可擴展性和性能,本文給大家介紹docker?compose部署mongodb?分片集群的相關(guān)操作,感興趣的朋友一起看看吧2024-10-10
docker環(huán)境下java參數(shù)傳遞與獲取
這篇文章主要為大家詳細介紹了docker環(huán)境下如何實現(xiàn)java參數(shù)傳遞與獲取,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以了解下2025-08-08
SpringBoot打包docker鏡像發(fā)布的詳細步驟
這篇文章主要介紹了SpringBoot打包docker鏡像發(fā)布,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
Docker?pull時報錯:https://registry-1.docker.io/v2/完美解決辦法
這篇文章主要介紹了Docker?pull時報錯:https://registry-1.docker.io/v2/完美解決辦法,文中通過代碼提供了詳細的解決步驟,包括檢查網(wǎng)絡(luò)連接、確保Docker服務(wù)正常運行以及更換Docker源,需要的朋友可以參考下2026-01-01
Docker搭建簡單的應(yīng)用棧與容器Hello World訪問詳解
這篇文章主要介紹了Docker搭建簡單的應(yīng)用棧與容器Hello World訪問,結(jié)合實例形式詳細分析了Docker應(yīng)用容器棧的獲取、互聯(lián)、啟動、配置以及應(yīng)用訪問測試相關(guān)操作技巧,需要的朋友可以參考下2018-06-06

