Docker系列教程17-默認bridge網絡中配置DNS

本節(jié)描述如何在Docker默認網橋中配置容器DNS憔鬼。 當您安裝Docker時,就會自動創(chuàng)建一個名為bridge 的橋接網絡梢薪。

注意Docker網絡功能 允許您創(chuàng)建除默認網橋之外的用戶自定義網絡。 有關用戶自定義網絡中DNS配置的更多信息尝哆,請參閱Docker嵌入式DNS 部分秉撇。

Docker如何為每個容器提供主機名和DNS配置,而無需在構建自定義Docker鏡像時在內部寫入主機名秋泄?它的訣竅是利用可以寫入新信息的虛擬文件琐馆,在容器內覆蓋三個關鍵的/etc 文件。 你可以通過在一個容器中運行mount 來看到這一點:

root@f38c87f2a42d:/# mount

...
/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/resolv.conf type ext4 ...
...

這樣一來恒序,Docker可以讓宿主機在稍后通過DHCP接收到新的配置后瘦麸,使所有容器中的resolv.conf 保持最新狀態(tài)。 Docker在容器中維護這些文件的具體細節(jié)可能會可能會隨著Docker版本的演進而改變歧胁,因此您不該自己管理/etc文件瞎暑,而應該用以下Docker選項。

四個不同的選項會影響容器域名服務与帆。

參數 描述
-h HOSTNAME or --hostname=HOSTNAME 設置容器的主機名了赌。 該設置的值將會被寫入/etc/hostname ;寫入/etc/hosts 作為容器的面向主機IP地址的名稱(筆者按:在/etc/hosts里添加一條記錄玄糟,IP是宿主機可以訪問的IP勿她,host就是你設置的host),并且是容器內部/bin/bash 在其提示符下顯示的名稱阵翎。 但主機名不容易從容器外面看到逢并。 它不會出現(xiàn)在docker ps 或任何其他容器的/etc/hosts 文件中之剧。
--link=CONTAINER_NAMEor ID:ALIAS run 容器時使用此選項為新容器的/etc/hosts 添加了一個名為ALIAS的額外條目,指向由CONTAINER_NAME_or_ID標識的CONTAINER_NAME_or_ID的IP地址砍聊。這使得新容器內的進程可以連接到主機名ALIAS 而不必知道其IP背稼。 --link=選項將在下面進行更詳細的討論。 因為Docker可以在重新啟動時為鏈接的容器分配不同的IP地址玻蝌,Docker會更新收件人容器的/etc/hosts 文件中的ALIAS條目蟹肘。
--dns=IP_ADDRESS... 在容器的/etc/resolv.conf文件添加nameserver 行,IP地址為指定IP俯树。 容器中的進程在如果需要訪問/etc/hosts 里的主機名帘腹,就會連接到這些IP地址的53端口,尋找名稱解析服務许饿。
--dns-search=DOMAIN... 通過在容器的/etc/resolv.conf寫入search 行阳欲,在容器內使用裸不合格的主機名時搜索的域名。 當容器進程嘗試訪問host 并且搜索域example.com 被設置時陋率,例如球化,DNS邏輯不僅將查找host ,還將查找host.example.com 瓦糟。使用--dns-search=. 如果您不想設置搜索域筒愚。
--dns-opt=OPTION... 通過將options 行寫入容器的/etc/resolv.conf 設置DNS解析器使用的選項。有關有效選項的列表狸页,請參閱resolv.conf文檔

在沒有--dns=IP_ADDRESS...--dns-search=DOMAIN...--dns-opt=OPTION...選項的情況下扯再,Docker使每個容器的/etc/resolv.conf 看起來像宿主機的/etc/resolv.conf 芍耘。當創(chuàng)建容器的/etc/resolv.conf ,Docker daemon會從主機的原始文件中過濾掉所有l(wèi)ocalhost IP地址nameserver 條目熄阻。

過濾是必要的斋竞,因為主機上的所有l(wèi)ocalhost地址都不可從容器的網絡中訪問。 過濾之后秃殉,如果容器的/etc/resolv.conf 文件中沒有更多的nameserver 條目坝初,Docker daemon會將Google DNS名稱服務器(8.8.8.8和8.8.4.4)添加到容器的DNS配置中。 如果守護進程啟用了IPv6钾军,則也會添加公共IPv6 Google DNS名稱服務器(2001:4860:4860::8888 和 2001:4860:4860::8844)鳄袍。

注意 :如果您需要訪問主機的localhost解析器,則必須在主機上修改DNS服務吏恭,以便偵聽從容器內可訪問的non-localhost地址拗小。

您可能會想知道宿主機的/etc/resolv.conf 文件發(fā)生了什么變化。 docker daemon 有一個文件更改通知程序樱哼,它將監(jiān)視主機DNS配置的更改哀九。

注意 :文件更改通知程序依賴于Linux內核的inotify功能剿配。由于此功能目前與overlay文件系統(tǒng)驅動不兼容,因此使用“overlay”的Docker daemon將無法利用/etc/resolv.conf 自動更新的功能阅束。

當宿主機文件更改時呼胚,所有resolv.conf 與主機匹配的停止的容器將立即更新到最新的主機配置。 當宿主機配置更改時息裸,運行的容器將需要停止并開始接收主機更改蝇更,這是由于缺少設備,以確保在容器運行時對resolv.conf 文件的原子寫入界牡。 如果容器修改了默認的resolv.conf 文件簿寂,則不會替換該文件,因為如果替換宿亡,將會覆蓋容器執(zhí)行的更改常遂。 如果選項( --dns--dns-search--dns-opt )已被用于修改默認的主機配置挽荠,則更換主機的/etc/resolv.conf 也不會發(fā)生克胳。

注意 :對于在Docker 1.5.0中實現(xiàn)/etc/resolv.conf 更新功能之前創(chuàng)建的容器:當主機resolv.conf文件更改時,這些容器將不會收到更新圈匆。 只有使用Docker 1.5.0及以上版本創(chuàng)建的容器才能使用此自動更新功能漠另。

英文原文

https://docs.docker.com/engine/userguide/networking/default_network/configure-dns/

拓展閱讀

Docker存儲驅動的選擇:https://docs.docker.com/engine/userguide/storagedriver/selectadriver/#docker-ce

本文首發(fā)

http://www.itmuch.com/docker/18-docker-user-network-embeded-dns/

干貨分享

全是干貨
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跃赚,隨后出現(xiàn)的幾起案子笆搓,更是在濱河造成了極大的恐慌,老刑警劉巖纬傲,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满败,死亡現(xiàn)場離奇詭異,居然都是意外死亡叹括,警方通過查閱死者的電腦和手機算墨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汁雷,“玉大人净嘀,你說我怎么就攤上這事∠姥叮” “怎么了挖藏?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長厢漩。 經常有香客問我熬苍,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任柴底,我火速辦了婚禮婿脸,結果婚禮上,老公的妹妹穿的比我還像新娘柄驻。我一直安慰自己狐树,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布鸿脓。 她就那樣靜靜地躺著抑钟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪野哭。 梳的紋絲不亂的頭發(fā)上在塔,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音拨黔,去河邊找鬼蛔溃。 笑死,一個胖子當著我的面吹牛篱蝇,可吹牛的內容都是我干的贺待。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼零截,長吁一口氣:“原來是場噩夢啊……” “哼麸塞!你這毒婦竟也來了?” 一聲冷哼從身側響起涧衙,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤哪工,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弧哎,有當地人在樹林里發(fā)現(xiàn)了一具尸體雁比,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年傻铣,在試婚紗的時候發(fā)現(xiàn)自己被綠了章贞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祥绞。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡非洲,死狀恐怖,靈堂內的尸體忽然破棺而出蜕径,到底是詐尸還是另有隱情两踏,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布兜喻,位于F島的核電站梦染,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜帕识,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一泛粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肮疗,春花似錦晶姊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碱呼,卻和暖如春蒙挑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愚臀。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工忆蚀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懊悯。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓蜓谋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炭分。 傳聞我的和親對象是個殘疾皇子桃焕,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351