docker容器無法ping域名問題及解決
docker容器無法ping域名問題
現(xiàn)象
容器內(nèi)
ping 114.114.114.114 #正常 ping baidu.com #超時
原因
DNS錯誤不能進行域名解析。
- 方法一:
容器目錄下新建resolv.conf文件。
vi ./resolv.conf
寫入:
search donot nameserver 8.8.8.8 nameserver 114.114.114.114 nameserver 127.0.0.11 options ndots:0
在docker-compose.yml中加入文件映射。
volumes: - ./resolv.conf:/etc/resolv.conf
- 方法二:
在docker配置中加入默認DNS(這個試了未成功,暫沒分析)。
docker容器無法訪問外網(wǎng) ping: bad address
# 進入容器 docker exec -it 容器id sh ping www.baidu.com # 返回結(jié)果:ping: bad address 'www.baidu.com'
推測原因應該是DNS網(wǎng)絡解析的問題,網(wǎng)上查資料得知,docker在創(chuàng)建時默認不會使用宿主機的網(wǎng)絡,是被單獨隔離在一個網(wǎng)絡環(huán)境中運行的。
考慮到我創(chuàng)建的容器不需要單獨的網(wǎng)絡環(huán)境,所以使用--network=host,實現(xiàn)docker訪問宿主機網(wǎng)絡,最終解決問題。
# 容器停止,并刪除 docker stop [容器id] docker rm [容器name] # 重新創(chuàng)建docker容器 docker run -it -d --init --name [容器name] --network=host -p [端口] [鏡像] # 進入容器查看 docker exec -it [新的容器id] sh ping www.baidu.com # 成功!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
教你使用Portainer管理多臺Docker容器環(huán)境的方法
這篇文章主要介紹了Portainer管理多臺Docker容器環(huán)境,本文給大家介紹的非常詳細,包括環(huán)境準備及管理docker的詳細過程,需要的朋友可以參考下2021-11-11Docker下MySQL配置文件不生效的解決方法(超全面!)
在Docker中運行MySQL并遇到需要調(diào)整配置的情況時,比如想要關閉ONLY_FULL_GROUP_BY的嚴格模式,我們可以通過以下步驟來實現(xiàn)sql_mode的修改:以下是解決此類問題的步驟和思路,需要的朋友可以參考下2024-09-09Docker安裝部署Redis數(shù)據(jù)庫的實現(xiàn)步驟
本文主要介紹了Docker安裝部署Redis數(shù)據(jù)庫的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02docker安裝Elasticsearch7.6集群并設置密碼
這篇文章主要介紹了docker安裝Elasticsearch7.6集群并設置密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06