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