日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【Docker】容器的几种网络模式

發布時間:2023/11/28 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Docker】容器的几种网络模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當你使用Docker時,你會發現需要了解很多關于網絡的知識。Docker作為目前最火的輕量級容器引擎,因此,我們有必要深入了解Docker的網絡知識,以滿足更高的網絡需求。本文介紹了Docker的4種網絡模式。

1、首先我們先簡單描述一下容器的這幾種網絡模式:

Bridge: 此模式會為每一個容器分配、設置IP等,并將容器連接到一個docker0虛擬網橋,通過docker0網橋以及Iptables nat表配置與宿主機通信。
none: 該模式關閉了容器的網絡功能。
Host :容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。
Container: 創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP、端口范圍。

2、當我們安裝好Docker引擎時默認會自動創建三個網絡:Bridge;none;Host

3、我們在使用docker run創建Docker容器時,可以用 --net 參數指定容器的網絡模式(如果不指定的話默認是Bridge模式)

Docker可以指定以下4種網絡模式:

host模式:使用 --net host 指定。

none模式:使用 --net none 指定。

bridge模式:使用 --net bridge 指定,默認。

container模式:使用 --net container:NAME_or_ID 指定。

4、下面分別介紹一下Docker的各個網絡模式。

一、none模式

   該模式將容器放置在它自己的網絡棧中,但是并不進行任何配置。一旦 Docker 容器 采用了none 網絡模式,那么容器內部就只能使用 loopback 網絡設備,不會再有其他的網絡資源。實際上,該模式關閉了容器的網絡功能。


二、Host模式

    相當于Vmware中的橋接模式,與宿主機在同一個網絡中,但沒有獨立IP地址。眾所周知,Docker使用了Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離進程,Mount Namespace隔離文件系統,NetworkNamespace隔離網絡等。一個Network Namespace提供了一份獨立的網絡環境,包括網卡、路由、Iptable規則等都與其他的Network Namespace隔離。一個Docker容器一般會分配一個獨立的Network Namespace。但如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。


二、Container模式

    這個模式指定新創建的容器和已經存在的一個容器共享一個Network Namespace,而不是和宿主機共享。新創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP、端口范圍等。同樣,兩個容器除了網絡方面,其他的如文件系統、進程列表等還是隔離的。兩個容器的進程可以通過lo網卡設備通信。

三、Bridge模式

    相當于Vmware中的Nat模式,容器使用獨立network Namespace,并連接到docker0虛擬網卡(Docker進程首次啟動時會在當前節點上創建一個名為docker0的橋設備,并默認配置其使用172.17.0.0/16網絡,改網絡是Bridge模式的一種實現,也是創建容器是默認使用的網絡),通過docker0網橋以及Iptables nat表配置與宿主機通信;bridge模式是Docker默認的網絡設置,此模式會為每一個容器分配Network Namespace、設置IP等,并將一個主機上的Docker容器連接到一個虛擬網橋上。


接下來介紹一下docker0虛擬網橋的工作方式:

    當Docker server啟動時,會在主機上創建一個名為docker0的虛擬網橋,此主機上啟動的Docker容器會連接到這個虛擬網橋上。虛擬網橋的工作方式和物理交換機類似,這樣主機上的所有容器就通過交換機連在了一個二層網絡中。接下來就要為容器分配IP了,Docker會從RFC1918所定義的私有IP網段中,選擇一個和宿主機不同的IP地址和子網分配給docker0,連接到docker0的容器就從這個子網中選擇一個未占用的IP使用。如一般Docker會使用172.17.0.0/16這個網段,并將172.17.0.1/16分配給docker0網橋(在主機上使用ifconfig命令是可以看到docker0的,可以認為它是網橋的管理接口,在宿主機上作為一塊虛擬網卡使用)。單機環境下的網絡拓撲如下,主機地址為10.10.0.186/24。


Bridge 橋接模式的實現步驟主要如下:
1、 Docker Daemon(守護進程) 利用 veth pair 技術,在宿主機上創建兩個虛擬網絡接口設備,假設為veth0 和 veth1。而 veth pair 技術的特性可以保證無論哪一個veth 接收到網絡報文,都會將報文傳輸給另一方。
2、Docker Daemon 將 veth0 附加到 Docker Daemon 創建的 docker0 網橋上。保證宿主機的網絡報文可以發往 veth0;
3、 Docker Daemon 將 veth1 添加到 Docker 容器所屬的 namespace 下,并被改名為 eth0。如此一來,保證宿主機的網絡報文若發往 veth0,則立即會被 eth0 接收,實現宿主機到Docker 容器網絡的聯通性,同時,也保證 Docker 容器單獨使用 eth0,實現容器網絡環境的隔離性。
bridge 橋接模式下的 Docker 容器在使用時,并非為開發者包辦了一切。最明顯的是,該模式下 Docker 容器不具有一個公有 IP,即和宿主機的 eth0 不處于同一個網段。導致的結果是宿主機以外的世界不能直接和容器進行通信。雖然 NAT 模式經過中間處理實現了這一點,但是 NAT 模式仍然存在問題與不便,如:容器均需要在宿主機上競爭端口,容器內部服務的訪問者需要使用服務發現獲知服務的外部端口等。另外 NAT 模式由于是在三層網絡上的實現手段,故肯定會影響網絡的傳輸效率。

總結

以上是生活随笔為你收集整理的【Docker】容器的几种网络模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。