日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Docker的四種網絡模式_docker

作者:癡者工良 ? 更新時間: 2022-06-07 編程語言

Docker 的四種網絡模式

Docker 有 bridge、none、host、container 四種網絡模式,提供網絡隔離、端口映射、容器間互通網絡等各種支持,下面開門見山地直接介紹這四種網絡模式。

這四種網絡模式可以通過啟動容器的時候指定,其命令或參數個數如下:

網絡模式 參數 說明
host模式 -–net=host 容器和宿主機共享 Network namespace。
container模式 –-net={id} 容器和另外一個容器共享 Network namespace。 kubernetes 中的pod就是多個容器共享一個 Network namespace。
none模式 –-net=none 容器有獨立的Network namespace,但并沒有對其進行任何網絡設置,如分配 veth pair 和網橋連接,配置IP等。
bridge模式 -–net=bridge 默認為該模式,通過 -p 指定端口映射。

這四種模式可以理解成 Docker 怎么虛擬化容器的網絡,隔離程度和共享程度。

bridge 模式

使用 Docker 創建一個 bridge 模式的容器命令格式如下:

docker run -itd -p 8080:80 nginx:latest

bridge 模式稱為網橋模式,首先 Docker 會在主機上創建一個名為 docker0 的虛擬網橋,這個虛擬網絡處于七層網絡模型的數據鏈路層,每當創建一個新的容器時,容器都會通過 docker0 與主機的網絡連接,docker0 相當于網橋。

使用 bridge 模式新創建的容器,其內部都有一個虛擬網卡,名為 eth0,容器之間可以通過 172.17.x.x 相互訪問。

一般情況下,網橋默認 IP 范圍是 172.17.x.x ,可以在宿主機執行 ifpconfig 命令查看所有網卡,里面會包含 Docker 容器的虛擬網卡,可以查看某個容器的 ip。在容器中,也可以使用 ifconfig 命令查看自身的容器 ip:

root@cda6958393cb:/var# ./ifconfig 
eth0: flags=4163  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 347  bytes 9507996 (9.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 278  bytes 22384 (22.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到,此容器的 ip 是 172.17.0.2。

使用了 bride 創建的容器,其網絡與主機以及其他容器隔離,以太網接口、端口、路由表以及 DNS配置 都是獨立的。每個容器都好像是一個獨立的主機 ,這便是 bridge(網橋)的作用。但是因為 docker0 的存在,對于容器來說,可以通過 ip 訪問別的容器。

容器1 可以通過 172.17.0.3 訪問容器2,同樣,主機也可以使用這個 ip 訪問容器2 中的服務。

[Error] 提示

bridge 模式 是默認模式,即使是 使用?docker run -itd nginx:latest?命令啟動容器,也會創建一個虛擬 IP。

none 模式

這種網絡模式下容器只有 lo 回環網絡,沒有其他網卡,這種類型的網絡沒有辦法聯網,外界也無法訪問它,封閉的網絡能很好地保證容器的安全性。

創建 none 網絡的容器:

docker run -itd --net=none nginx:latest
root@5a67da130f62:/var# ./ifconfig 
lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

host 模式

host 模式會讓容器與主機共享網絡,此時映射的端口可能會生產沖突,但是容器的其余部分(文件系統、進程等)依然是隔離的,此時容器與宿主機共享網絡。

container 模式

container 模式可以讓多個容器之間相互通訊,即容器之間共享網絡。

首先啟動一個 A 容器,A 一般為 bridge 網絡,接著 B 使用?–-net={id}?連接到 A 中,使用 A 的虛擬網卡,此時 A、B 共享網絡,可以接著加入 B、C、D 等容器。

原文鏈接:https://www.cnblogs.com/whuanle/p/15586840.html

欄目分類
最近更新