在 docker-compose.yml 中增加 extra_hosts 關(guān)鍵字就可以將數據寫(xiě)入到容器的 /etc/hosts。
extra_hosts
添加主機名映射。
extra_hosts:
“somehost:162.242.195.82”
“otherhost:50.31.209.229”
將會(huì )在/etc/hosts創(chuàng )建記錄:
162.242.195.82 somehost
50.31.209.229 otherhost
注意:
如果指向的是本機,不要寫(xiě)容器的ip,(因為IP重啟后會(huì )變,除非你給容器設置固定ip)而是寫(xiě)宿主機的ip,如192.168.xxx.xxx
補充:Docker 網(wǎng)絡(luò ):host模式
當我們準備將Docker技術(shù)應用到生產(chǎn)級別的場(chǎng)景時(shí),我們需要了解很多網(wǎng)絡(luò )方面的知識。網(wǎng)絡(luò )是Docker中相對比較薄弱的部分,我們有必要了解Docker的網(wǎng)絡(luò )知識,以滿(mǎn)足更高的網(wǎng)絡(luò )需求。
本節先對Docker網(wǎng)絡(luò )模型中的host模型進(jìn)行理論介紹,再通過(guò)案例的實(shí)操,讓您更好地去理解docker網(wǎng)絡(luò )模型。
當你安裝完Docker時(shí),它會(huì )自動(dòng)創(chuàng )建三個(gè)網(wǎng)絡(luò )。你可以使用以下docker network ls命令列出這些網(wǎng)絡(luò ):
docker network ls
結果應如下
NETWORK ID NAME DRIVER SCOPE 594430d2d4bb bridge bridge local d855b34c5d51 host host local b1ecee29ed5e none null local
Docker內置這三個(gè)網(wǎng)絡(luò ),運行容器時(shí),你可以使用該來(lái)指定容器應連接到哪些網(wǎng)絡(luò )。
我們在使用docker run創(chuàng )建Docker容器時(shí),可以用--network標志 選項指定容器的網(wǎng)絡(luò )模式,Docker有以下4種網(wǎng)絡(luò )模式:
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默認設置。
container模式:使用 --net=container:NAME_or_ID 指定。
Docker使用了Linux的Namespaces技術(shù)來(lái)進(jìn)行資源隔離,如PID Namespace隔離進(jìn)程,Mount Namespace隔離文件系統,Network Namespace隔離網(wǎng)絡(luò )等。一個(gè)Network Namespace提供了一份獨立的網(wǎng)絡(luò )環(huán)境,包括網(wǎng)卡、路由、Iptable規則等都與其他的Network Namespace隔離。
host模式類(lèi)似于Vmware的橋接模式,與宿主機在同一個(gè)網(wǎng)絡(luò )中,但沒(méi)有獨立IP地址。一個(gè)Docker容器一般會(huì )分配一個(gè)獨立的Network Namespace。
但如果啟動(dòng)容器的時(shí)候使用host模式,那么這個(gè)容器將不會(huì )獲得一個(gè)獨立的Network Namespace,而是和宿主機共用一個(gè)Network Namespace。容器將不會(huì )虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機的IP和端口。
如下圖所示:容器與主機在相同的網(wǎng)絡(luò )命名空間下面,使用相同的網(wǎng)絡(luò )協(xié)議棧,容器可以直接使用主機的所有網(wǎng)絡(luò )接口
查看主機鏈路接口
ip a
我們右側云環(huán)境主機的IP為{host0.ip}/24上用host模式啟動(dòng)nginx容器,監聽(tīng)它的tcp80端口。
使用--net host參數來(lái)指定網(wǎng)絡(luò )模型使用host模式
docker run --name=nginx --net=host -p 80:80 -d nginx
查看容器鏈路接口,與主機一致
docker exec -it nginx cat /etc/hosts
這時(shí)外界要訪(fǎng)問(wèn)容器中的應用,則直接使用{host0.ip}:80即可,不用任何NAT轉換,就像直接跑在宿主機中一樣。但是,容器的其他方面,如文件系統、進(jìn)程列表等還是和宿主機隔離的。
curl {host0.ip}
host 模式簡(jiǎn)單并且性能高,host 模式下面的網(wǎng)絡(luò )模型是最簡(jiǎn)單和最低延遲的模式,容器進(jìn)程直接與主機網(wǎng)絡(luò )接口通信,與物理機性能一致,host 不利于網(wǎng)絡(luò )自定配置和管理,并且所有主機的容器使用相同的IP。
也不利于主機資源的利用。對網(wǎng)絡(luò )性能要求比較高,可以使用該模式。否則應該使用其他模式
以上為個(gè)人經(jīng)驗,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站