Docker 網絡模式
本文首先介紹了Docker自身的4種網絡工作方式,
Docker作為目前最火的輕量級容器技術,有很多令人稱道的功能,如Docker的鏡像管理。然而,Docker同樣有著很多不完善的地方,網絡方面就是Docker比較薄弱的部分。因此,我們有必要深入了解Docker的網絡知識,以滿足更高的網絡需求。
四種網絡模式
我們在使用docker run創建Docker容器時,可以用--net選項指定容器的網絡模式,Docker有以下4種網絡模式:
? host模式,使用--net=host指定。
? container模式,使用--net=container:NAME_or_ID指定。
? none模式,使用--net=none指定。
? bridge模式,使用--net=bridge指定,默認設置。
1 host模式
眾所周知,Docker使用了Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統,Network Namespace隔離網絡等。一個Network Namespace提供了一份獨立的網絡環境,包括網卡、路由、Iptable規則等都與其他的Network Namespace隔離。一個Docker容器一般會分配一個獨立的Network Namespace。但如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。
例如,我們在10.10.101.105/24的機器上用host模式啟動一個含有web應用的Docker容器,監聽tcp80端口。當我們在容器中執行任何類似ifconfig命令查看網絡環境時,看到的都是宿主機上的信息。而外界訪問容器中的應用,則直接使用10.10.101.105:80即可,不用任何NAT轉換,就如直接跑在宿主機中一樣。但是,容器的其他方面,如文件系統、進程列表等還是和宿主機隔離的。
2 container模式
在理解了host模式后,這個模式也就好理解了。這個模式指定新創建的容器和已經存在的一個容器共享一個Network Namespace,而不是和宿主機共享。新創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP、端口范圍等。同樣,兩個容器除了網絡方面,其他的如文件系統、進程列表等還是隔離的。兩個容器的進程可以通過lo網卡設備通信。
3 none模式
這個模式和前兩個不同。在這種模式下,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進行任何網絡配置。也就是說,這個Docker容器沒有網卡、IP、路由等信息。需要我們自己為Docker容器添加網卡、配置IP等。
4 bridge模式
bridge模式是Docker默認的網絡設置,此模式會為每一個容器分配Network Namespace、設置IP等,并將一個主機上的Docker容器連接到一個虛擬網橋上。下面著重介紹一下此模式。
host模式使用Docker run時使用 主站蜘蛛池模板: 丹巴县| 梅河口市| 武汉市| 且末县| 承德市| 鹤庆县| 安丘市| 道孚县| 浪卡子县| 漳平市| 禄劝| 通河县| 高雄市| 成安县| 屏边| 星座| 西乡县| 辰溪县| 新民市| 乌兰浩特市| 青铜峡市| 仙桃市| 呼和浩特市| 垦利县| 舟曲县| 佳木斯市| 枣强县| 黔西县| 通州区| 寻乌县| 高阳县| 土默特左旗| 大化| 庄浪县| 炉霍县| 屏东市| 扬州市| 宣汉县| 龙井市| 邵东县| 马龙县|