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

猜你喜歡LIKE
相關推薦HOT
更多>>
SEO優(yōu)化
SEO優(yōu)化,1、合理的title、description、keywords:搜索對著三項的權重逐個減小,title值強調重點即可;description把頁面內容高度概括,不可過...詳情>>
2023-04-03 15:11:51
Python數(shù)據(jù)生產(chǎn)器
Python數(shù)據(jù)生產(chǎn)器,在軟件開發(fā)、測試或者數(shù)據(jù)分析過程中,有時候會需要一些測試數(shù)據(jù)。做測試的時候,需要模擬真實的環(huán)境,但是又不能直接使用真...詳情>>
2023-03-28 15:56:13
Java集合是什么?Java集合詳解
Java集合是Java編程語言中的一個重要概念,用于存儲、管理和處理數(shù)據(jù)。Java集合框架提供了一組接口和類,用于實現(xiàn)常見的數(shù)據(jù)結構,如列表、棧、...詳情>>
2023-03-20 19:12:47
js查找字符串中指定字符的位置
另外,如果要查找一個字符串中所有出現(xiàn)的指定字符的位置,可以使用indexOf()方法結合循環(huán)來實現(xiàn)。然后,我們使用循環(huán)遍歷字符串中的每一個字符...詳情>>
2023-03-10 14:06:35熱門推薦
跨域如何解決
沸SEO優(yōu)化
熱Null和undefined的區(qū)別
熱Python數(shù)據(jù)生產(chǎn)器
新react中怎么實現(xiàn)vue中的計算屬性以及watch
經(jīng)典面試題:static加載機制你知道嗎?
消息中間件常用協(xié)議有哪些
Java集合是什么?Java集合詳解
線程池實現(xiàn)原理
java數(shù)據(jù)結構與算法
Java到底有多難?
js查找字符串中指定字符的位置
jquery獲取checkbox是否選中
四種方式創(chuàng)建SpringBoot項目
技術干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學習費用
了解課程價格 -
優(yōu)惠活動
領取優(yōu)惠券 -
學習資源
領3000G教程 -
師資團隊
了解師資團隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線