溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker中怎么對hosts進行修改

發(fā)布時間:2021-07-27 17:18:42 來源:億速云 閱讀:243 作者:Leah 欄目:大數(shù)據(jù)

本篇文章為大家展示了Docker中怎么對hosts進行修改,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Docker修改hosts?這還不簡單,打開vim直接敲就完事兒了!然而事與愿違,事情沒有我們想的那么簡單。在很多場景中,比如我們需要搭建一個集群,這時候容器要識別集群內(nèi)的節(jié)點,就需要添加相應的host解析。這時就需要修改容器的hosts文件,下面我們將會看到在Docker中自動化實現(xiàn)修改hosts不是那么簡單的事。

問題的由來

hosts文件其實并不是存儲在Docker鏡像中的,/etc/hosts, /etc/resolv.conf和/etc/hostname,是存在主機上的/var/lib/docker/containers/(docker_id)目錄下,容器啟動時是通過mount將這些文件掛載到容器內(nèi)部的。因此如果在容器中修改這些文件,修改部分不會存在于容器的top layer,而是直接寫入這3個文件中。容器重啟后修改內(nèi)容不存在的原因是Docker每次創(chuàng)建新容器時,會根據(jù)當前docker0下的所有節(jié)點的IP信息重新建立hosts文件。也就是說,你的修改會被Docker給自動覆蓋掉。

解決辦法

修改hosts一眼看上去是一件很容易的事,根據(jù)上面的分析其實不是那么簡單的,如果一個分布式系統(tǒng)在數(shù)十個節(jié)點上,每次重新啟動都要去修改hosts顯得很麻煩,如何解決這一問題,目前有以下辦法。

開啟時加參數(shù)

開啟容器時候添加參數(shù)—add-host machine:ip可以實現(xiàn)hosts修改,在容器中可以識別machine主機。缺點是很多個節(jié)點的話命令會很長,有點不舒服(當然,你可以寫一個腳本了)。

進入容器修改

進入容器后可以用各種編輯器編輯修改hosts文件,這樣是最簡單粗暴的方式,缺點就是每次啟動容器都要修改一次。

dnsmasq

在每個容器中開啟dnsmasq開負責局域網(wǎng)內(nèi)的容器節(jié)點主機名解析,但是這種方式在跨物理機的時候,好像不是很方便(具體情況還沒有實踐過,挖坑日后再填)??梢詤⒖家幌耴iwenlau的工作

修改容器hosts查找目錄

我們可以想辦法讓容器開啟時候,不去找/etc/hosts文件,而是去找我們自己定義的hosts文件,下面是一個Dockerfile實例

1234567
FROM ubuntu:14.04RUN cp /etc/hosts /tmp/hosts #路徑長度最好保持一致RUN mkdir -p -- /lib-override && cp /lib/x86_64-linux-gnu/libnss_files.so.2 /lib-overrideRUN sed -i 's:/etc/hosts:/tmp/hosts:g' /lib-override/libnss_files.so.2ENV LD_LIBRARY_PATH /lib-overrideRUN echo "192.168.0.1 node1" >> /tmp/hosts #可以隨意修改/tmp/hosts了...

這樣修改后,容器每次啟動時就不去找/etc/hosts了,而是我們自己定義的/tmp/hosts,可以隨心所欲在其中修改了

小結(jié)

以上問題可以用于跨主機部署分布式Docker集群,結(jié)合之前的跨物理機Docker網(wǎng)絡互聯(lián),便可以實現(xiàn)快速高效部署分布式集群

原文鏈接:

https://wongxingjun.github.io

-更多文章-

Spring Cloud GateWay初體驗

Kubernetes基礎(chǔ)與架構(gòu)

對業(yè)務系統(tǒng)的監(jiān)控 No.118

Kubernetes對象模型

拜托!面試請不要再問我Spring Cloud底層原理

【性能優(yōu)化之道】每秒上萬并發(fā)下的Spring Cloud參數(shù)優(yōu)化實戰(zhàn)

Docker 核心技術(shù)與實現(xiàn)原理

學習別跟我談興趣 No.88

條件注解 @ConditionalOnBean 的正確使用姿勢

分布式事務的實現(xiàn)原理

條件注解 @ConditionalOnBean 的正確使用姿勢

上述內(nèi)容就是Docker中怎么對hosts進行修改,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI