docker 容器自定義 hosts 網絡訪問操作
在 docker-compose.yml 中增加 extra_hosts 關鍵字就可以將數(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重啟后會變,除非你給容器設置固定ip)而是寫宿主機的ip,如192.168.xxx.xxx
補充:Docker 網絡:host模式
當我們準備將Docker技術應用到生產級別的場景時,我們需要了解很多網絡方面的知識。網絡是Docker中相對比較薄弱的部分,我們有必要了解Docker的網絡知識,以滿足更高的網絡需求。
本節(jié)先對Docker網絡模型中的host模型進行理論介紹,再通過案例的實操,讓您更好地去理解docker網絡模型。
Docker網絡
當你安裝完Docker時,它會自動創(chuàng)建三個網絡。你可以使用以下docker network ls命令列出這些網絡:
docker network ls
結果應如下
NETWORK ID NAME DRIVER SCOPE 594430d2d4bb bridge bridge local d855b34c5d51 host host local b1ecee29ed5e none null local
Docker內置這三個網絡,運行容器時,你可以使用該來指定容器應連接到哪些網絡。
我們在使用docker run創(chuàng)建Docker容器時,可以用--network標志 選項指定容器的網絡模式,Docker有以下4種網絡模式:
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默認設置。
container模式:使用 --net=container:NAME_or_ID 指定。
host模式
Docker使用了Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統(tǒng),Network Namespace隔離網絡等。一個Network Namespace提供了一份獨立的網絡環(huán)境,包括網卡、路由、Iptable規(guī)則等都與其他的Network Namespace隔離。
host模式類似于Vmware的橋接模式,與宿主機在同一個網絡中,但沒有獨立IP地址。一個Docker容器一般會分配一個獨立的Network Namespace。
但如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。
如下圖所示:容器與主機在相同的網絡命名空間下面,使用相同的網絡協(xié)議棧,容器可以直接使用主機的所有網絡接口
案例驗證
查看主機鏈路接口
ip a
我們右側云環(huán)境主機的IP為{host0.ip}/24上用host模式啟動nginx容器,監(jiān)聽它的tcp80端口。
使用--net host參數(shù)來指定網絡模型使用host模式
docker run --name=nginx --net=host -p 80:80 -d nginx
查看容器鏈路接口,與主機一致
docker exec -it nginx cat /etc/hosts
這時外界要訪問容器中的應用,則直接使用{host0.ip}:80即可,不用任何NAT轉換,就像直接跑在宿主機中一樣。但是,容器的其他方面,如文件系統(tǒng)、進程列表等還是和宿主機隔離的。
curl {host0.ip}
總結
host 模式簡單并且性能高,host 模式下面的網絡模型是最簡單和最低延遲的模式,容器進程直接與主機網絡接口通信,與物理機性能一致,host 不利于網絡自定配置和管理,并且所有主機的容器使用相同的IP。
也不利于主機資源的利用。對網絡性能要求比較高,可以使用該模式。否則應該使用其他模式
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
使用Docker部署 spring-boot maven應用的方法
本篇文章主要介紹了使用Docker部署 spring-boot maven應用的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08docker安裝tomcat并部署Springboot項目war包的方法
這篇文章主要介紹了docker安裝tomcat并部署Springboot項目war包的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11使用docker部署springboot項目到服務器的詳細過程
這篇文章主要介紹了docker部署springboot項目到服務器,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06一文教會你用Docker打包Python運行環(huán)境
Docker提供了容器級別的資源隔離,由于Python的外部依賴管理中存在的問題,我們通常會使用virtualenv來對不同的項目創(chuàng)建其唯一的依賴環(huán)境,下面這篇文章主要給大家介紹了如何通過一篇文章教會你用Docker打包Python運行環(huán)境的相關資料,需要的朋友可以參考下2022-05-05