緱懌悅
在日常使用Docker構(gòu)建微服務架構(gòu)的過程中,我們經(jīng)常會遇到一個問題:多個容器之間是如何通過名字互相訪問的?DNS是怎么做到的?
從底層機制講清楚Docker的DNS系統(tǒng)
1.容器間通信的前提:同一個網(wǎng)絡
Docker默認會創(chuàng)建一個叫bridge的網(wǎng)橋網(wǎng)絡。所有未指定網(wǎng)絡的容器,都會被分配到這個bridge網(wǎng)絡中。
在這個默認網(wǎng)絡中,雖然每個容器都有一個獨立的IP地址,但要實現(xiàn)通過容器名訪問其他容器,就必須依賴Docker提供的DNS服務。
??注意:只有在用戶自定義的bridge網(wǎng)絡中,容器名解析才默認開啟!默認的bridge網(wǎng)絡不支持容器名解析!
2.Docker的內(nèi)置DNS是如何工作的?
Docker在每個容器啟動時,會將容器的/etc/resolv.conf文件指向一個特殊的DNS地址:127.0.0.11
這個地址并不是真的公網(wǎng)DNS,而是DockerDaemon內(nèi)置的DNS服務器。
這個DNS有以下作用:
解析外部域名(比如訪問百度、Google)
解析容器內(nèi)部服務名(比如web,db等容器名)
它的背后是Docker的embeddedDNSserver,工作機制大概如下:
1??容器發(fā)出DNS查詢請求(查某個服務名)
2??請求發(fā)到127.0.0.11(docker的內(nèi)部DNS)
3??DockerDNS根據(jù)網(wǎng)絡配置,找到對應容器的IP地址
4??將結(jié)果返回給發(fā)起請求的容器
3.實驗驗證:容器名訪問是否生效?
我們創(chuàng)建一個自定義網(wǎng)絡,并啟動兩個容器測試下
#創(chuàng)建一個自定義bridge網(wǎng)絡dockernetworkcreatemynet#啟動容器A,名字叫webdockerrun-it--rm--nameweb--networkmynetbusyboxsh#啟動容器B,在這個網(wǎng)絡中嘗試pingwebdockerrun-it--rm--networkmynetbusyboxsh
在B容器中輸入:
pingweb
你會發(fā)現(xiàn),DNS能自動解析出web的IP,這就說明Docker的內(nèi)置DNS正常工作啦
4.自定義服務名(別名)怎么設置?
有時候我們希望容器訪問的名字不是容器名,而是我們指定的服務名。Docker也支持這一點:
dockerrun-it--rm\--networkmynet\--namemydb\--network-aliasdatabase\busyboxsh
然后在其他容器中,就可以通過database這個名字訪問它
5.與外部DNS的協(xié)同
Docker的embeddedDNS并不是萬能的,它在無法解析服務名時,會把請求轉(zhuǎn)發(fā)給/etc/resolv.conf中指定的上游DNS。
這意味著:
外部網(wǎng)絡訪問正常(比如你容器內(nèi)pingwww.baidu.com)
內(nèi)部容器名也能解析
DockerDNS是中間層代理
這個設計非常巧妙!兼顧了內(nèi)外網(wǎng)的域名解析。
6.容器DNS失效的常見問題
?沒有使用自定義網(wǎng)絡,導致DNS解析失敗
?使用了host網(wǎng)絡,容器直接共享宿主機網(wǎng)絡,無法使用Docker的DNS
?被resolv.conf修改或者掛載了宿主機DNS文件
?某些VPN環(huán)境導致容器DNS路由異常
解決方法建議:
盡量使用自定義bridge網(wǎng)絡
檢查/etc/resolv.conf是否被覆蓋
檢查Docker網(wǎng)絡配置dockernetworkinspect
總結(jié)
Docker容器之間的DNS解析,其實是靠DockerDaemon內(nèi)置的DNS服務(監(jiān)聽在127.0.0.11)來實現(xiàn)的,它能讓容器通過服務名互相訪問,還支持alias、自定義網(wǎng)絡、多級域名等能力。
游戲異界的小說20本,虛擬現(xiàn)實、系統(tǒng)穿越、第四天災等多元設定
不知道這本結(jié)束后,掌門秘錄那本會不會撿起來續(xù)上-。2、《混在末日,獨自成仙》278萬字完本完結(jié)時間:6月1日言歸正傳作品,《我?guī)熜謱嵲谔€(wěn)健了》《深淵獨行》的作者。寫了差不多一年,三萬訂以上|。修仙界的修道奇才因為一心只想飛升成仙,忽略了太多的人和事,最終因心性有缺,沒能度過天劫,差點魂飛魄散。
盤點35部2024年4-6月高口碑完本小說,強烈推薦書荒的讀者看看!
經(jīng)過一年的鍛煉,通過爺爺?shù)纳闪钆?,踏上接引仙船,通過三觀測試,成為了金丹宗外門弟子,正式踏上了修仙之途|-。進入宗門的主角依靠金手指的幫助很快就踏上了修煉之路,成為宗門的最強者,帶領宗門變強,開始探索這個世界,到后面成仙飛升,進入仙界,接觸到神話傳說中的人物,最終成道做祖-|。書評:融合了凡人流、穿越流等我繼續(xù)說。
盤點50本高質(zhì)量的仙俠修真小說,都是值得一看的經(jīng)典小說!
《逆天成仙》深諳男頻受眾的隱秘心理,熟知網(wǎng)絡熱梗,但又不原樣照搬,也不挑戰(zhàn)社會容忍度,而是以一種克制的姿態(tài)見縫插針地融入劇情。比如,三位女性一字排開分別要求履行婚約的場面,不就是“俺也一樣”的翻版嗎?除此之外,男頻爽劇往往與玄幻、奇幻掛鉤,特效自不能少。以往在長劇中,“網(wǎng)游特效”是句罵人是什么。
來源:紅網(wǎng)
作者:李宗霞
編輯:張任潔
本文為紅辣椒評論 原創(chuàng)文章,僅系作者個人觀點,不代表紅網(wǎng)立場。轉(zhuǎn)載請附原文出處鏈接和本聲明。