1. 程式人生 > >Docker容器不能解析DNS本地地址

Docker容器不能解析DNS本地地址

Containers cannot resolve DNS if docker host uses 127.0.0.1 as resolver

Error code

Step 2/9 : RUN apt-get update     && apt-get install --no-install-recommends --no-install-suggests -y     supervisor     openssh-server     && echo "root:Docker!" | chpasswd
 ---> Running in 622924
bc162e Err:1 http://security.debian.org stretch/updates InRelease Temporary failure resolving 'security.debian.org' Err:2 http://deb.debian.org/debian stretch InRelease Temporary failure resolving 'deb.debian.org' Err:3 http://nginx.org/packages/mainline/debian stretch InRelease Temporary failure resolving 'nginx.org'
Err:4 http://deb.debian.org/debian stretch-updates InRelease Temporary failure resolving 'deb.debian.org' Reading package lists... W: Failed to fetch http://deb.debian.org/debian/dists/stretch/InRelease Temporary failure resolving 'deb.debian.org' W: Failed to fetch http://deb.debian.org/debian/dists/stretch-updates/InRelease Temporary
failure resolving 'deb.debian.org' W: Failed to fetch http://security.debian.org/dists/stretch/updates/InRelease Temporary failure resolving 'security.debian.org' W: Failed to fetch http://nginx.org/packages/mainline/debian/dists/stretch/InRelease Temporary failure resolving 'nginx.org' W: Some index files failed to download. They have been ignored, or old ones used instead. Reading package lists... Building dependency tree... Reading state information... E: Unable to locate package supervisor E: Unable to locate package openssh-server

Solve

reason

default DNS server can not resolve domain name to IP.
default DNS file: /etc/resolv.conf

[email protected]Virtual-Machine:/etc# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search corp.microsoft.com

get actual DNS server

Get/Set DNS server

$ cat /etc/resolv.conf | grep nameserver  # What Docker sees
nameserver 127.0.1.1
$ nmcli dev show | grep IP4.DNS  # My actual DNS server
IP4.DNS[1]:                             10.50.50.50

Fail Info

song@song-Virtual-Machine:~/git/apps/nginx$ docker run busybox nslookup corp.microsoft.com
Server:    8.8.8.8
Address 1: 8.8.8.8

nslookup: can't resolve 'corp.microsoft.com'

Edit resolve.conf with actual dns server

root@song-Virtual-Machine:/etc# cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
#nameserver 127.0.1.1
nameserver 10.50.50.50
search corp.microsoft.com

Resolve successfully.

[email protected]:~/git/apps/nginx$ docker run busybox nslookup corp.microsoft.com
Server:    10.50.50.50
Address 1: 10.50.50.50 f5-1.redmond.corp.microsoft.com

Name:      corp.microsoft.com
...

Context

root@song-Virtual-Machine:/etc# docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:42:18 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:56 2017
 OS/Arch:      linux/amd64
 Experimental: false
root@song-Virtual-Machine:/etc# cat /etc/os-release 
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

相關推薦

Docker容器不能解析DNS本地地址

Containers cannot resolve DNS if docker host uses 127.0.0.1 as resolver Error code Step 2/9 : RUN apt-get update &&

Docker容器加載宿主機的hosts解析

doc name 文件 自定義日誌 項目 har 進入容器 主機 刪除 前言   公司一直在用傳統的tomcat下丟war包的架構體系,隨著項目的增多、服務器數量的增多、需要為此花費很多時間在不同服務器的系統環境問題上。為了技術的與時俱進和工作的運維效率等方面,筆者引入d

docker 系列 - 修改容器DNS 伺服器

# 檢視容器的 dns 解析設定檔案, 也可以檢查docker 執行環境 DNS docker run busybox:latest cat /etc/resolv.conf # 為容器 mybusybox 執行手動設定一個dns伺服器, 並檢查是否生效docker run --dns 10.0.0.2 -

docker容器日誌收集方案(方案一 filebeat+本地日誌收集)

filebeat不用多說就是掃描本地磁碟日誌檔案,讀取檔案內容然後遠端傳輸。 docker容器日誌預設記錄方式為 json-file 就是將日誌以json格式記錄在磁碟上 格式如下: {   "log": "2018-11-16 01:24:3

docker容器日誌收集方案(方案二 filebeat+syslog本地日誌收集)

與方案一一樣都是把日誌輸出到本地檔案系統使用filebeat進行掃描採集 不同的是輸出的位置是不一樣的 我們對docker進行如下設定 sudo docker service update  --log-driver syslog  pbblyrms

docker容器日誌收集方案(方案三 filebeat+journald本地日誌收集)

其實方案三和方案二日誌採集套路一樣,但是還是有點差別。 差別就在於日誌格式如下:   ​ 為了方便對比吧日誌貼上來 Nov 16 10:51:58 localhost 939fe968a91d[4721]: 2018-11-16 02:51:58.89

網路通訊過程--解析:IP地址, 埠port,,DNS伺服器,MAC地址,預設閘道器,通訊過程圖解(理解型)

IP地址: 用來在網路中標記一臺電腦,指引資料包的收發方向,在一個區域網中是唯一的;電腦中的ip是可以手動修改的,只要在同一個區域網中不重複即可。 分類: ①ip地址的組成,包括網路地址和主機地址

無法解析DNS服務地址

如果DNS伺服器地址設定不當,可能會導致網速慢、出現彈窗廣告、網址打不開、開啟不是自己想要的網站等一系列問題。 請參考: DNS的作用是什麼,怎樣設定DNS? https://jingyan.baidu.com/article/aa6a2c14876c2d0d4c19c4a8.html  

檢視docker容器Ip地址

Docker內需要訪問本機的資料庫,如何訪問。使用127.0.0.1肯定是不行的,因為這個在Docker容器裡面指的是容器本身。所以,需要走別動渠道進行解決。 docker inspect --format={{.NetworkSettings.IPAddress}} 容器id

golang容器DNS解析問題排查

先寫一個一個測試案例 package main import ( "fmt" "net" "os" ) func main() { if len(os.Args) != 2 { fmt.Fprintf(os.St

Docker容器檢視ip地址

一直以為Docker是沒有IP地址的,其實Docker的網路模板有點類似我們平常使用虛擬機器的host-only模式,容器和宿主機組成一個獨立的區域網,宿主機的IP為172.17.0.1,對應主機的網路名稱為docker0 所以要想看到docker容器的i

拷貝本地檔案到docker容器

查詢所有容器 docker ps -a 找出我們想要的容器名字 查詢容器長ID docker inspect -f '{{.ID}}' python 拷貝本地檔案到容器

為Kubernetes叢集裡的容器提供DNS服務,用於解析service名稱

部署DNS服務 kubedns負責從KUBERNETES_SERVICE_HOST收集service+namespace與clusterIP的對映關係; dnsmasq根據kubedns收集的資訊,提供名稱解析服務。 下載映象到本地倉庫 k

Kubernetes權威指南第2版 和 Docker技術入門與實戰第2版 兩本容器的書下載地址

Docker技術入門與實戰第2版目錄[0第0]2版前言[0第0]1版前言[0第0]一部分 基礎入門[0第0]1章 初識容器與Docker 31.1 什麼是Docker 31.2 為什麼要使用Docker 51.3 Docker與虛擬化 71.4 本章小結 9[0第0]2章 核心概念與安裝配置 102.1 核心

win7下啟動docker容器的訪問地址和SSH連線docker虛擬環境的方法

win7下安裝docker後會為docker所在的虛擬環境分配一個IP,以後如果啟動docker容器時指定了對映埠,就可以通過這個IP訪問docker容器的應用程式。 通過docker-machine env這個命令可以檢視分配的IP,其中一行export DOCKER_

docker容器內部域名解析超時導致web訪問500

************************ 配置dns服務-dnsmasq *************************** #安裝dnsmasq 服務 [ema

調試 Dockerfile - 每天5分鐘玩轉 Docker 容器技術(15)

top add font tom middle 程序 ria family 是個 包括 Dockerfile 在內的任何腳本和程序都會出錯。有錯並不可怕,但必須有辦法排查,所以本節討論如何 debug Dockerfile。 先回顧一下通過 Dockerfile 構建鏡像

Dockerfile 常用指令 - 每天5分鐘玩轉 Docker 容器技術(16)

依次 官方文檔 構建 bottom str -s 暴露 工作 12px 是時候系統學習 Dockerfile 了。下面列出了 Dockerfile 中最常用的指令,完整列表和說明可參看官方文檔。 FROM指定 base 鏡像。 MAINTAINER設置鏡像的作

RUN vs CMD vs ENTRYPOINT - 每天5分鐘玩轉 Docker 容器技術(17)

docker 教程 容器 RUN、CMD 和 ENTRYPOINT 這三個 Dockerfile 指令看上去很類似很容易混淆。本節將通過實踐詳細討論它們的區別。簡單的說RUN 執行命令並創建新的鏡像層RUN 經常用於安裝軟件包。CMD 設置容器啟動後默認執行的命令及其參數但 CMD 能夠被 doc

使用公共 Registry - 每天5分鐘玩轉 Docker 容器技術(19)

docker 教程 容器 保存和分發鏡像的最直接方法就是使用 Docker Hub。Docker Hub 是 Docker 公司維護的公共 Registry。用戶可以將自己的鏡像保存到 Docker Hub 免費的 repository 中。如果不希望別人訪問自己的鏡像,也可以購買私有 repos