帶你細致學習Docker網絡 - bridge模式
最近有幾個已經就業的小伙伴,過來問千鋒健哥關于Docker網絡配置的問題,他們在實際開發中還是有些疑問。關于Docker網絡這一塊的內容確實很多,為了讓大家搞清楚這個問題,健哥準備搞幾篇系列文章,來為各位小伙伴解惑。這次健哥帶來的是Docker網絡的Bridge模式,接下來我們直接上干貨!!!
Docker容器和服務之所以強大的原因之一,是可以將它們連接在一起,或者將它們連接到非Docker的工作負載上。而Docker容器和服務甚至都不需要知道它們部署在Docker容器上。無論Docker主機是運行在Linux、window上,或者兩者混合運行,都可以使用Docker以與平臺無關的方式來管理它們。
而這一切的基礎,都是緣于Docker網絡提供的強大功能和良好設計!
一. 操作環境
我們先說一下運行所需要的環境,如下:
centos 7.x版本
docker版本:Docker version 20.10.18, build b40c2f6
xshell 7
·
二. Docker network 常用命令
我們先來看看Docket中提供的常用network命令。
1.
查看docker network幫助手冊
2.
列出docker網絡
通過docker network create創建一個網絡
查看qf網絡的詳細信息
三. Docker網絡的作用
在開始學習Docker網絡用法之前,我們再來了解一下Docker網絡的作用,主要作用如下:
1. Docker網絡可以負責容器間的相互連接和通信,以及端口映射; 2. 當容器`ip`地址發生更改時,可以通過服務名稱進行網絡通信,不會因為`ip`的更改導致服務不可用。
四. 網絡模式
Docker的網絡有以下幾種網絡模式。
網絡模式說明
bridge, 虛擬網橋, 默認模式每一個容器有獨立的ip, 并將容器連接到docker0網橋上
host使用宿主機的ip和端口號, 容器不會虛擬出自己的網卡、配置ip
none有獨立的network namespace,但是并未對其進行任何網絡設置
container和一個指定的容器共享ip和端口號, 不會虛擬出網卡、配置ip等操作.
1. bridge模式
網橋模式,是docker默認的網絡模式。
1.1 案例說明
我們可以創建兩臺centos容器,分別進入這兩臺容器中查看網絡情況,查看ip是否相同。
進入容器,查看各自的ip地址。
結論:通過觀察可以發現,這兩個centos容器的ip地址并不相同。docker服務默認會創建一個docker0網橋,它在內核層連通了其它物理或者虛擬網卡,它會將所有容器和本機放到同一個物理網絡。docker默認指定了docker0接口的ip地址和子網掩碼,讓主機和容器之間通過互相通信。
1.2 在宿主機中查看docker0網橋
docker使用linux進行橋接,在宿主機上虛擬一個docker網橋「docker0」。docker啟動一個容器會根據docker網橋的網段,分配給容器一個ip地址,稱為為container-ip。
docker網橋是每個容器的默認網關,同一臺宿主機內的容器都會接入一個網橋,這樣容器之間就能通過container-ip進行通信了。
當創建容器的時候,如果沒有指定網絡模式,默認會使用bridge,使用的就是docker0。在宿主機執行ifconfig時,可以查看到docker0或者自己創建的網絡。
eth0, eth1… 代表網卡一,網卡二…
lo, 表示本地回環網絡。
inet ip用來表示網卡的ip地址。
2. bridge模式詳解
整個宿主機的網橋模式都是docker0,類似于一個交換機有一大堆接口,每個接口都可以稱為veth。在宿主機和容器內分別創建一個虛擬接口,并讓他們彼此連通「veth pair」;
每個實例內部都有一塊網卡,每個接口可以稱為eth0。
docker0上面每個veth,匹配某個容器內部的eth0,一一配對 或 兩兩配對。
重要結論:將宿主機上的所有容器都連接到這個內部網絡上,兩個容器在同一個網絡下,會從這個網卡拿到分配的ip,此時兩個容器的網絡是互通的。
2.1 驗證案例
o
啟動兩臺centos容器,在宿主機當中查看網絡在情況. ip addr
o
o
進入mycentos01容器。
o
o
進入mycentos02容器。
o
o
宿主機eth0, docker0與容器內eth0之間的對應關系。
o
o
完整圖示:
o
2.2 bridge使用的正確姿勢
五. 總結
各位小伙伴,今天千鋒健哥為大家帶來的birdge模式就是這些內容了,是不是很容易理解呢?
docker網絡作為整個docker體系中極為重要的一個知識點,在生產中經常被用到,尤其是網絡模式當中的bridge模式和host模式更是應該重點掌握。
自定義網絡,可以通過服務名稱「容器名稱」進行容器間的通信。自動處理了容器名稱與ip地址的映射關系,這樣使得容器間通信更為可靠和容易。
至于其他模式,如果各位小伙伴想要了解,敬請繼續期待千鋒健哥本系列的其他文章哦。

相關推薦HOT
更多>>
SEO優化
SEO優化,1、合理的title、description、keywords:搜索對著三項的權重逐個減小,title值強調重點即可;description把頁面內容高度概括,不可過...詳情>>
2023-04-03 15:11:51
Python數據生產器
Python數據生產器,在軟件開發、測試或者數據分析過程中,有時候會需要一些測試數據。做測試的時候,需要模擬真實的環境,但是又不能直接使用真...詳情>>
2023-03-28 15:56:13
Java集合是什么?Java集合詳解
Java集合是Java編程語言中的一個重要概念,用于存儲、管理和處理數據。Java集合框架提供了一組接口和類,用于實現常見的數據結構,如列表、棧、...詳情>>
2023-03-20 19:12:47
js查找字符串中指定字符的位置
另外,如果要查找一個字符串中所有出現的指定字符的位置,可以使用indexOf()方法結合循環來實現。然后,我們使用循環遍歷字符串中的每一個字符...詳情>>
2023-03-10 14:06:35