docker學習3-虛擬網絡模式


一、虛擬機網絡模式

在理解docker網絡隔離前,先看下之前虛擬機里對網絡的處理,VirtualBox中有4中網絡連接方式:

  1. NAT
  2. Bridged Adapter
  3. Internal
  4. Host-only Adapter

VMWare中有三種,其實他跟VMWare 的網絡連接方式都是一樣概念,只是比VMWare多了Internal方式。

要讓自己(或別人)理解深刻,方法就是做比較和打比方,比較之間的不同和相同,拿熟知的事物打比方。先來一張圖,通過這張圖就很容易看出這4種方式的區別:

NAT:Network Address Translation,網絡地址轉換,NAT模式 是最簡單的實現虛擬機上網的方式, 虛擬機 訪問網絡的所有數據都是由主機提供的, 虛擬機 並不真實存在於網絡中,主機與網絡中的任何機器都不能查看和訪問到 虛擬機 的存在。 虛擬機 可以訪問主機能訪問到的所有網絡,但是對於主機以及主機網絡上的其他機器, 虛擬機 又是不可見的,甚至主機也訪問不到 虛擬機
 

 Bridged Adapter(網橋模式)是通過主機網卡,架設了一條橋,直接連入到網絡中了。因此,它使得虛擬機能被分配到一個網絡中獨立的IP,所有網絡功能完全和在網絡中的真實機器一樣。網橋模式下的虛擬機,你把它認為是真實計算機就行了。

 
Internal(內網模式) 就是內部網絡模式: 虛擬機與外網完全斷開,只實現虛擬機於虛擬機之間的內部網絡模式。
 
Host-only Adapter(主機模式) 是一種比較復雜的模式,前面幾種模式所實現的功能,在這種模式下,通過虛擬機及網卡的設置都可以被實現。 我們可以理解為 虛擬機 在主機中模擬出一張專供虛擬機使用的網卡,所有虛擬機都是連接到該網卡上的,我們可以通過設置這張網卡來實現上網及其他很多功能,比如(網卡共享、網卡橋接等)。
 
二、docker的4種網絡模式
Docker使用了Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統,Network Namespace隔離網絡等。一個Network Namespace提供了一份獨立的網絡環境,包括網卡、路由、Iptable規則等都與其他的Network Namespace隔離。一個Docker容器一般會分配一個獨立的Network Namespace。 docker根據如何為容器分配Network Namespace分為4種網絡模式。
•bridge模式,使用--net=bridge指定,默認設置。
bridge模式是Docker默認的網絡設置,此模式會為每一個容器分配Network Namespace、設置IP等,並將一個主機上的Docker容器連接到一個虛擬網橋上。在bridge模式下,連在同一網橋上的容器可以相互通信(若出於安全考慮,也可以禁止它們之間通信,方法是在DOCKER_OPTS變量中設置--icc=false,這樣只有使用--link才能使兩個容器通信)。默認docker容器對外是不可見的,外部主機訪問主機的ip端口,然后通過DNAT轉換到docker容器的ip和端口,從而間接的訪問docker容器服務。也可以通過pipework等工具設置每個容器ip對外部主機可見。
 
•host模式,使用--net=host指定。
啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。容器中應用的ip和端口和宿主主機共用。
 
•container模式,使用--net=container:NAME_or_ID指定。
指定新創建的容器和已經存在的一個容器共享一個Network Namespace,而不是和宿主機共享。新創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP、端口范圍等。同樣,兩個容器除了網絡方面,其他的如文件系統、進程列表等還是隔離的。兩個容器的進程可以通過lo網卡設備通信。
 
•none模式,使用--net=none指定。
這種模式下,Docker容器擁有自己的Network Namespace,但是,並不為Docker容器進行任何網絡配置。也就是說,這個Docker容器沒有網卡、IP、路由等信息。需要我們自己為Docker容器添加網卡、配置IP等。
 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM