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時使用 主站蜘蛛池模板: 昌乐县| 台州市| 林周县| 临沭县| 泰来县| 澄江县| 泰安市| 甘孜县| 集安市| 久治县| 山东| 张北县| 玉屏| 宜都市| 清流县| 明星| 株洲县| 广平县| 嵊州市| 满城县| 新郑市| 岳阳县| 奉贤区| 武邑县| 娱乐| 阳朔县| 拉孜县| 长顺县| 江华| 盐源县| 长寿区| 清涧县| 丹江口市| 无棣县| 叶城县| 贺兰县| 大洼县| 饶平县| 阳江市| 垫江县| 南召县|