佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > docker 容器自定義 hosts 網(wǎng)絡(luò)訪問操作

docker 容器自定義 hosts 網(wǎng)絡(luò)訪問操作

熱門標(biāo)簽:百度競價點擊價格的計算公式 智能手機 美圖手機 使用U盤裝系統(tǒng) 阿里云 硅谷的囚徒呼叫中心 檢查注冊表項 網(wǎng)站建設(shè)

在 docker-compose.yml 中增加 extra_hosts 關(guān)鍵字就可以將數(shù)據(jù)寫入到容器的 /etc/hosts。

extra_hosts

添加主機名映射。

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

注意:

如果指向的是本機,不要寫容器的ip,(因為IP重啟后會變,除非你給容器設(shè)置固定ip)而是寫宿主機的ip,如192.168.xxx.xxx

補充:Docker 網(wǎng)絡(luò):host模式

當(dāng)我們準(zhǔn)備將Docker技術(shù)應(yīng)用到生產(chǎn)級別的場景時,我們需要了解很多網(wǎng)絡(luò)方面的知識。網(wǎng)絡(luò)是Docker中相對比較薄弱的部分,我們有必要了解Docker的網(wǎng)絡(luò)知識,以滿足更高的網(wǎng)絡(luò)需求。

本節(jié)先對Docker網(wǎng)絡(luò)模型中的host模型進行理論介紹,再通過案例的實操,讓您更好地去理解docker網(wǎng)絡(luò)模型。

Docker網(wǎng)絡(luò)

當(dāng)你安裝完Docker時,它會自動創(chuàng)建三個網(wǎng)絡(luò)。你可以使用以下docker network ls命令列出這些網(wǎng)絡(luò):

docker network ls

結(jié)果應(yīng)如下

NETWORK ID     NAME        DRIVER       SCOPE
594430d2d4bb    bridge       bridge       local
d855b34c5d51    host        host        local
b1ecee29ed5e    none        null        local

Docker內(nèi)置這三個網(wǎng)絡(luò),運行容器時,你可以使用該來指定容器應(yīng)連接到哪些網(wǎng)絡(luò)。

我們在使用docker run創(chuàng)建Docker容器時,可以用--network標(biāo)志 選項指定容器的網(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ù)來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統(tǒng),Network Namespace隔離網(wǎng)絡(luò)等。一個Network Namespace提供了一份獨立的網(wǎng)絡(luò)環(huán)境,包括網(wǎng)卡、路由、Iptable規(guī)則等都與其他的Network Namespace隔離。

host模式類似于Vmware的橋接模式,與宿主機在同一個網(wǎng)絡(luò)中,但沒有獨立IP地址。一個Docker容器一般會分配一個獨立的Network Namespace。

但如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機的IP和端口。

如下圖所示:容器與主機在相同的網(wǎng)絡(luò)命名空間下面,使用相同的網(wǎng)絡(luò)協(xié)議棧,容器可以直接使用主機的所有網(wǎng)絡(luò)接口

案例驗證

查看主機鏈路接口

ip a

我們右側(cè)云環(huán)境主機的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

查看容器鏈路接口,與主機一致

docker exec -it nginx cat /etc/hosts

這時外界要訪問容器中的應(yīng)用,則直接使用{host0.ip}:80即可,不用任何NAT轉(zhuǎn)換,就像直接跑在宿主機中一樣。但是,容器的其他方面,如文件系統(tǒng)、進程列表等還是和宿主機隔離的。

curl {host0.ip}

總結(jié)

host 模式簡單并且性能高,host 模式下面的網(wǎng)絡(luò)模型是最簡單和最低延遲的模式,容器進程直接與主機網(wǎng)絡(luò)接口通信,與物理機性能一致,host 不利于網(wǎng)絡(luò)自定配置和管理,并且所有主機的容器使用相同的IP。

也不利于主機資源的利用。對網(wǎng)絡(luò)性能要求比較高,可以使用該模式。否則應(yīng)該使用其他模式

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽:黃山 通遼 湖北 賀州 山南 煙臺 湘潭 懷化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《docker 容器自定義 hosts 網(wǎng)絡(luò)訪問操作》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    伊通| 合阳县| 佛坪县| 毕节市| 北京市| 靖西县| 普格县| 淮北市| 含山县| 青浦区| 屏东市| 卫辉市| 华安县| 江达县| 莆田市| 怀柔区| 舞钢市| 波密县| 新营市| 瑞安市| 县级市| 诸暨市| 松阳县| 遂川县| 永昌县| 藁城市| 江安县| 博兴县| 祁阳县| 绥江县| 长武县| 竹山县| 阳新县| 清流县| 玉树县| 新邵县| 石河子市| 郓城县| 涪陵区| 大化| 兴和县|