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