Docker 容器中的網域名稱解析問題

2021-08-19 13:41:42 字數 841 閱讀 1908

假如,你的開發環境是用 docker 搭建的,當用 curl 來訪問區域網內另外一台伺服器的 api 時,會出現網域名稱無法解析的情況。

出現類似下面的錯誤提示資訊:

curl error 6: could not resolve host

couldn't resolve host. the given remote host was not resolved.

原因是 docker 容器無法解析區域網內的網域名稱,就算你配置了本地主機的 hosts 網域名稱對映也不行。docker 環境不同於 wamp 或 xampp,對於區域網內的網域名稱解析,docker 需要到 docker 容器中配置 hosts 檔案。

進入 docker 容器後,在 hosts 檔案中,配置網域名稱解析。

# 進入 docker 容器

docker exec -it my_web /bin/bash

# 修改 hosts 檔案

vi /etc/hosts

# 新增網域名稱解析規則

192.168.99.100 example.test

# 或者,直接追加字串到指定的檔案末尾

echo '192.168.99.100 example.test' >> /etc/hosts

儲存退出後,利用 ping 命令驗證一下,是否可以 ping 通。

docker-machine.exe ssh default

ping example.test

需要注意的是:每次重啟容器(服務)後,容器中的 /etc/hosts 檔案新增的配置就會失效,故需要重新配置一下。

Docker容器內部無法解析網域名稱

背景 部署乙個專案,在專案內部需要訪問外網。給某雲上傳檔案,但是一直報unknown host,無法解析網域名稱,然後找了好久原因 linux系統預設沒有開啟ip 功能,要確認ip 功能的狀態,可以檢視 proc檔案系統,使用下面命令 cat proc sys net ipv4 ip forward...

qt中網域名稱解析的方法

qt中提供了可以實現網域名稱解析功能的類qhostinfo,這個類解析網域名稱提供兩種機制,一種是阻塞式,一種是非阻塞訊號槽機制,下面介紹第二種機制的實現方法。qt的幫助中給出了這個類的例子 qhostinfo lookuphost www.kde.org this,slot lookedup qh...

網域名稱解析的過程

簡述網域名稱的解析過程 1.客戶機提出網域名稱解析請求,並將該請求傳送給本地的網域名稱伺服器。2.當本地的網域名稱伺服器收到請求後,就先查詢本地的快取,如果有該紀錄項,則本地的網域名稱伺服器就直接把查詢的結果返回。3.如果本地的快取中沒有該紀錄,則本地網域名稱伺服器就直接把請求發給根網域名稱伺服器,...