新聞中心
在 docker-compose.yml 中增加 extra_hosts 關(guān)鍵字就可以將數(shù)據(jù)寫入到容器的 /etc/hosts。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、梅列網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為梅列等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
extra_hosts添加主機(jī)名映射。
extra_hosts:
“somehost:162.242.195.82”
“otherhost:50.31.209.229”
將會在/etc/hosts創(chuàng)建記錄:
162.242.195.82 somehost
50.31.209.229 otherhost
注意:
如果指向的是本機(jī),不要寫容器的ip,(因?yàn)镮P重啟后會變,除非你給容器設(shè)置固定ip)而是寫宿主機(jī)的ip,如192.168.xxx.xxx
補(bǔ)充:Docker 網(wǎng)絡(luò):host模式
當(dāng)我們準(zhǔn)備將Docker技術(shù)應(yīng)用到生產(chǎn)級別的場景時(shí),我們需要了解很多網(wǎng)絡(luò)方面的知識。網(wǎng)絡(luò)是Docker中相對比較薄弱的部分,我們有必要了解Docker的網(wǎng)絡(luò)知識,以滿足更高的網(wǎng)絡(luò)需求。
本節(jié)先對Docker網(wǎng)絡(luò)模型中的host模型進(jìn)行理論介紹,再通過案例的實(shí)操,讓您更好地去理解docker網(wǎng)絡(luò)模型。
Docker網(wǎng)絡(luò)當(dāng)你安裝完Docker時(shí),它會自動創(chuàng)建三個(gè)網(wǎng)絡(luò)。你可以使用以下docker network ls命令列出這些網(wǎng)絡(luò):
docker network ls結(jié)果應(yīng)如下
NETWORK ID NAME DRIVER SCOPE594430d2d4bb bridge bridge locald855b34c5d51 host host localb1ecee29ed5e none null localDocker內(nèi)置這三個(gè)網(wǎng)絡(luò),運(yùn)行容器時(shí),你可以使用該來指定容器應(yīng)連接到哪些網(wǎng)絡(luò)。
我們在使用docker run創(chuàng)建Docker容器時(shí),可以用--network標(biāo)志 選項(xiàng)指定容器的網(wǎng)絡(luò)模式,Docker有以下4種網(wǎng)絡(luò)模式:
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默認(rèn)設(shè)置。
container模式:使用 --net=container:NAME_or_ID 指定。
host模式Docker使用了Linux的Namespaces技術(shù)來進(jìn)行資源隔離,如PID Namespace隔離進(jìn)程,Mount Namespace隔離文件系統(tǒng),Network Namespace隔離網(wǎng)絡(luò)等。一個(gè)Network Namespace提供了一份獨(dú)立的網(wǎng)絡(luò)環(huán)境,包括網(wǎng)卡、路由、Iptable規(guī)則等都與其他的Network Namespace隔離。
host模式類似于Vmware的橋接模式,與宿主機(jī)在同一個(gè)網(wǎng)絡(luò)中,但沒有獨(dú)立IP地址。一個(gè)Docker容器一般會分配一個(gè)獨(dú)立的Network Namespace。
但如果啟動容器的時(shí)候使用host模式,那么這個(gè)容器將不會獲得一個(gè)獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個(gè)Network Namespace。容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機(jī)的IP和端口。
如下圖所示:容器與主機(jī)在相同的網(wǎng)絡(luò)命名空間下面,使用相同的網(wǎng)絡(luò)協(xié)議棧,容器可以直接使用主機(jī)的所有網(wǎng)絡(luò)接口
案例驗(yàn)證查看主機(jī)鏈路接口
ip a我們右側(cè)云環(huán)境主機(jī)的IP為{host0.ip}/24上用host模式啟動nginx容器,監(jiān)聽它的tcp80端口。
使用--net host參數(shù)來指定網(wǎng)絡(luò)模型使用host模式
docker run --name=nginx --net=host -p 80:80 -d nginx查看容器鏈路接口,與主機(jī)一致
docker exec -it nginx cat /etc/hosts這時(shí)外界要訪問容器中的應(yīng)用,則直接使用{host0.ip}:80即可,不用任何NAT轉(zhuǎn)換,就像直接跑在宿主機(jī)中一樣。但是,容器的其他方面,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的。
curl {host0.ip}總結(jié)host 模式簡單并且性能高,host 模式下面的網(wǎng)絡(luò)模型是最簡單和最低延遲的模式,容器進(jìn)程直接與主機(jī)網(wǎng)絡(luò)接口通信,與物理機(jī)性能一致,host 不利于網(wǎng)絡(luò)自定配置和管理,并且所有主機(jī)的容器使用相同的IP。
也不利于主機(jī)資源的利用。對網(wǎng)絡(luò)性能要求比較高,可以使用該模式。否則應(yīng)該使用其他模式
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
網(wǎng)頁標(biāo)題:docker容器自定義hosts網(wǎng)絡(luò)訪問操作
文章來源:http://www.dlmjj.cn/article/sogcoc.html