最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker網(wǎng)絡(luò)進(jìn)行容器通信與隔離之道的實(shí)踐指南

 更新時(shí)間:2025年09月15日 10:03:42   作者:敲上癮  
這篇文章主要為大家詳細(xì)介紹了Docker中網(wǎng)絡(luò)的相關(guān)知識(shí),包括常見(jiàn)網(wǎng)絡(luò)類型,如何實(shí)現(xiàn)容器間通信等內(nèi)容,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下

一、Docker網(wǎng)絡(luò)概念

1.1 Docker為什么需要網(wǎng)絡(luò)

  • 實(shí)現(xiàn)容器間通信:這是最核心的原因?,F(xiàn)代應(yīng)用,尤其是微服務(wù)架構(gòu),是由多個(gè)獨(dú)立的服務(wù)組成的(例如:Web前端、用戶認(rèn)證服務(wù)、訂單服務(wù)、數(shù)據(jù)庫(kù)等)。每個(gè)服務(wù)通常運(yùn)行在各自的容器中。
  • 實(shí)現(xiàn)外部網(wǎng)絡(luò)訪問(wèn)容器內(nèi)的服務(wù):一個(gè)Web服務(wù)器容器(如Nginx、Tomcat)之所以有用,是因?yàn)橥獠坑脩簦ㄍㄟ^(guò)瀏覽器)或其他系統(tǒng)能夠訪問(wèn)它提供的服務(wù)(如網(wǎng)站或API)。
  • 允許容器訪問(wèn)外部網(wǎng)絡(luò):容器內(nèi)的應(yīng)用經(jīng)常需要從互聯(lián)網(wǎng)獲取資源或數(shù)據(jù)。
  • 連接容器與宿主機(jī):有時(shí)容器需要與宿主機(jī)上的服務(wù)或文件系統(tǒng)進(jìn)行交互。

1.2 常見(jiàn)網(wǎng)絡(luò)類型

  • Bridge網(wǎng)絡(luò)(橋接網(wǎng)絡(luò)):是 Docker 的默認(rèn)網(wǎng)絡(luò)模式,它會(huì)在宿主機(jī)內(nèi)部創(chuàng)建一個(gè)私有虛擬網(wǎng)絡(luò),容器像連接到同一個(gè)虛擬交換機(jī)一樣被分配獨(dú)立IP,并通過(guò)NAT與外部通信,是實(shí)現(xiàn)單主機(jī)上多容器間通信最常用且隔離性良好的方式。
  • Host(宿主機(jī)網(wǎng)絡(luò)):讓容器直接共享宿主機(jī)的網(wǎng)絡(luò)命名空間,容器本身沒(méi)有獨(dú)立IP,直接使用主機(jī)網(wǎng)卡和端口,消除了NAT開(kāi)銷從而提供最佳網(wǎng)絡(luò)性能,但代價(jià)是犧牲了網(wǎng)絡(luò)隔離性并可能引發(fā)端口沖突。
  • Container(容器網(wǎng)絡(luò)):這個(gè)模式指定新創(chuàng)建的容器和引進(jìn)存在的一個(gè)容器共享一個(gè)網(wǎng)絡(luò) ,而不是和宿主機(jī)共享。新創(chuàng)建的容器不會(huì)創(chuàng)建自己的網(wǎng)卡,配置自己的 ip,而是和一個(gè)指定的容器共享 ip,端口等,兩個(gè)容器除了網(wǎng)絡(luò)方面,其他的如文件系統(tǒng)、進(jìn)程列表等還是隔離的。兩個(gè)容器的進(jìn)程可以通過(guò) lo 網(wǎng)卡設(shè)備通信。
  • None(無(wú)網(wǎng)絡(luò)):模式為容器提供了一個(gè)完全無(wú)網(wǎng)絡(luò)的環(huán)境,內(nèi)部?jī)H存在回環(huán)接口,使其與外界徹底隔離,適用于追求絕對(duì)安全或只需執(zhí)行離線計(jì)算的特殊任務(wù)。
  • Overlay(疊加網(wǎng)絡(luò)):是用于 Docker 集群的高級(jí)模式,它能在多個(gè)物理主機(jī)之上構(gòu)建一個(gè)統(tǒng)一的虛擬網(wǎng)絡(luò),使不同機(jī)器上的容器能像在同一局域網(wǎng)內(nèi)一樣直接通信,是 Swarm 或 Kubernetes 等編排工具的基礎(chǔ)。

二、網(wǎng)絡(luò)命令

docker network create

功能:創(chuàng)建自定義網(wǎng)絡(luò)

語(yǔ)法:

docker network create [OPTIONS] NETWORK

關(guān)鍵參數(shù):

  • d, --driver:網(wǎng)絡(luò)驅(qū)動(dòng)
  • --gateway:網(wǎng)關(guān)地址
  • --subnet:表示網(wǎng)段的 CIDR 格式的子網(wǎng)
  • --ipv6:?jiǎn)⒂?ipv6

示例:

docker network inspect

功能:查看網(wǎng)絡(luò)詳情

語(yǔ)法:

docker network inspect [OPTIONS] NETWORK [NETWORK...]

關(guān)鍵參數(shù):

-f, --format: 指定格式

示例:

docker network connect

功能:用于將容器連接到網(wǎng)絡(luò),可以按名稱或 ID 連接容器。連接后,容器可以與同一網(wǎng)絡(luò)中的其他容器通信。

語(yǔ)法:

docker network connect [OPTIONS] NETWORK CONTAINER

關(guān)鍵參數(shù):

  • --ip: 指定 IP 地址
  • --ip6: 指定 IPv6 地址

示例:

docker network disconnect

功能:斷開(kāi)網(wǎng)絡(luò)

語(yǔ)法:

docker network disconnect [OPTIONS] NETWORK CONTAINER

關(guān)鍵參數(shù):

-f:強(qiáng)制斷開(kāi)

示例:docker network disconnect web1 mybox1

docker network prune

功能:刪除不使用的網(wǎng)絡(luò)

語(yǔ)法:

docker network prune [OPTIONS]

關(guān)鍵參數(shù):

  • -f, --force:不提示

示例:

docker network rm

功能:刪除 1 個(gè)或者多個(gè)網(wǎng)絡(luò)

語(yǔ)法:

docker network rm NETWORK [NETWORK...]

關(guān)鍵參數(shù):

-f: 強(qiáng)制刪除

示例:

docker network ls

功能:列出網(wǎng)絡(luò)

語(yǔ)法:

docker network ls [OPTIONS]

別名:docker network list

關(guān)鍵參數(shù):

  • -f, --filter: 指定過(guò)濾條件
  • --format: 指定格式
  • --no-trunc: 不截?cái)?/li>
  • -q,--quiet:僅僅顯示id

示例:

三、網(wǎng)絡(luò)模式的設(shè)置

docker Bridge網(wǎng)絡(luò)

bridge網(wǎng)絡(luò)結(jié)構(gòu):

              +---------------+
              |   Internet    |
              +-------+-------+
                      |
             +--------+---------+
             |   Host eth0      |
             | 192.168.1.100/24 |
             +--------+---------+
                      |
                      | (NAT)
+---------------------+------------------------+
|               docker0 Bridge                 |
|              172.17.0.1/16                   |
+--------+----------------------------+---------+
        |                            |
        | (veth pair)                | (veth pair)
        |                            |
+--------+----------+       +---------+---------+
|   Container A     |       |   Container B     |
|                   |       |                   |
|    eth0:          |       |    eth0:          |
|   172.17.0.2/16   |       |   172.17.0.3/16   |
+-------------------+       +-------------------+

在創(chuàng)建容器時(shí)沒(méi)有使用--network參數(shù)指定網(wǎng)絡(luò)時(shí),默認(rèn)連接到docker模式。

注意:docker 自定義橋接網(wǎng)絡(luò)支持通過(guò)Docker DNS服務(wù)進(jìn)行域名解析,也就是我們可以直接通過(guò)使用容器名進(jìn)行通信,因?yàn)?code>DNS服務(wù)可以解析容器名到IP地址的映射,但是默認(rèn)的Bridge網(wǎng)絡(luò)時(shí)不支持DNS的。

案例:讓兩個(gè)容器連接到同一個(gè)自定義網(wǎng)絡(luò)進(jìn)行通信

1.創(chuàng)建自定義網(wǎng)絡(luò)web1

docker network create web1

2.創(chuàng)建并啟動(dòng)兩個(gè)busybox容器,并且將容器連接到網(wǎng)絡(luò)web1

  • docker run -itd --name=box1 --network web1 busybox
  • docker run -itd --name=box2 --network web1 busybox

3.進(jìn)入box1容器檢驗(yàn)是否能與box2通信

  • docker exec -it box1 sh
  • ping box2
  • exit

4.進(jìn)入box2容器檢驗(yàn)是否能與box1通信

  • docker exec -it box2 sh
  • ping box1
  • exit

5.創(chuàng)建一個(gè)容器box3使用默認(rèn)的bridge

docker run -itd --name=box33 --name=box3 busybox

6.驗(yàn)證是否能進(jìn)行DNS域名解析和是否能與使用自定義網(wǎng)絡(luò)的容器通信

  • docker exec -it box3 sh
  • ping box1

效果如下:

注意:容器啟動(dòng)后,Docker 有時(shí)不會(huì)明確提示運(yùn)行結(jié)果(成功 / 失?。?,因此建議每次啟動(dòng)容器后,通過(guò)docker psdocker ps -a命令檢查容器狀態(tài)。

3.1 host網(wǎng)絡(luò)

host網(wǎng)絡(luò)結(jié)構(gòu):

                            +---------------+
                            |   Internet    |
                            +-------+-------+
                                    |
+-------------------------------------------------+
|                   Docker Host                   |
|                                                 |
|  +---------------------+                        |
|  |   Host eth0         +------------------------+
|  | 192.168.1.100/24    |                        |
|  +---------------------+                        |
|                                                 |
|  +-------------------------------------------+  |
|  |              Container                    |  |
|  |                                           |  |
|  |  (直接使用宿主機(jī)的網(wǎng)絡(luò)棧)                     |  |
|  |  (共享 eth0: 192.168.1.100/24)             |  |
|  +-------------------------------------------+  |
+-------------------------------------------------+

示例:

運(yùn)行容器使用host網(wǎng)絡(luò)

docker run -itd --name=box4 --network host busybox

檢查宿主機(jī)網(wǎng)絡(luò)配置信息和容器的網(wǎng)絡(luò)配置信息是否相同

  • ifconfig
  • docker exec -it box4 ifconfig

該模式的缺點(diǎn):宿主機(jī)和容器的端口是共用的,無(wú)隔離,所以不能讓它們用相同的端口。

測(cè)試:

因?yàn)閷⑺拗鳈C(jī)nginx服務(wù)啟動(dòng)(默認(rèn)是80端口)

nginx

啟動(dòng)一個(gè)nginx容器(默認(rèn)使用的也是80端口)使用host網(wǎng)絡(luò),看是否出現(xiàn)沖突

docker run -d --name=web1 --network host nginx:1.24.0

檢查該容器是否在正常運(yùn)行

  • docker ps
  • docker ps -a

3.2 container網(wǎng)絡(luò)

container網(wǎng)絡(luò)結(jié)構(gòu):

                      +---------------+
                      |   Internet    |
                      +-------+-------+
                              |
                     +--------+---------+
                     |   Host eth0      |
                     | 192.168.1.100/24 |
                     +--------+---------+
                              |
                     +--------+---------+
                     |   docker0 Bridge |
                     |  172.17.0.1/16   |
                     +--------+---------+
                              |
                              | (veth pair)
+-------------------+       +--+-------------------+
|   Container A     |       |   Container B      |
|  (網(wǎng)絡(luò)提供者)       |       |  (共享網(wǎng)絡(luò)棧)       |
|                   |       |                    |
|    eth0:          |       |                    |
|   172.17.0.2/16   +-------+                    |
|                   |       | 使用Container A的   |
+-------------------+       | 網(wǎng)絡(luò)命名空間         |
                           | eth0: 172.17.0.2/16|
                           +-------------------

該模式和host模式類似,只是對(duì)象換成了容器

示例:

啟動(dòng)box5容器以container模式連接到box1

docker run -itd --name=box5 --network container:box1 busybox

檢查網(wǎng)絡(luò)聯(lián)通性

  • docker exec -it box5 ping www.baidu.com
  • docker exec -it box5 ifconfig

斷開(kāi)box1的網(wǎng)絡(luò),檢查box5網(wǎng)絡(luò)變化

  • docker network disconnect web1 box1
  • docker exec -it box5 ping www.baidu.com
  • docker exec -it box5 ifconfig

啟動(dòng)box1的網(wǎng)絡(luò),檢查box5網(wǎng)絡(luò)變化

  • docker network connect web1 box1
  • docker exec -it box5 ping www.baidu.com
  • docker exec -it box5 ifconfig

3.3 none網(wǎng)絡(luò)

none網(wǎng)絡(luò)就是指沒(méi)有網(wǎng)絡(luò),處于這個(gè)模式下的容器除了lo(本地環(huán)回),沒(méi)有任何虛擬網(wǎng)卡。

示例:

創(chuàng)建并啟動(dòng)容器,網(wǎng)絡(luò)設(shè)置為none模式

docker run -itd --name=box6 --network none busybox

嘗試ping百度

docker exec -it box6 ping www.baidu.com

查看ifconfig

docker exec -it box6 ifconfig

效果:

以上就是Docker網(wǎng)絡(luò)進(jìn)行容器通信與隔離之道的實(shí)踐指南的詳細(xì)內(nèi)容,更多關(guān)于Docker網(wǎng)絡(luò)容器通信的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker端口映射的完全指南

    Docker端口映射的完全指南

    端口映射指的是將容器的端口映射到主機(jī)的端口,使得外部用戶能夠通過(guò)主機(jī)的IP地址和端口訪問(wèn)容器內(nèi)運(yùn)行的服務(wù),本文給大家介紹了Docker端口映射的完全指南,需要的朋友可以參考下
    2025-08-08
  • 在Linux系統(tǒng)中安裝Docker的過(guò)程

    在Linux系統(tǒng)中安裝Docker的過(guò)程

    這篇文章主要介紹了如何在Linux系統(tǒng)中安裝Docker,其實(shí)安裝docker真的很簡(jiǎn)單,只需要幾條命令就可以完成了,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Docker私有倉(cāng)庫(kù)打開(kāi)2375端口的實(shí)現(xiàn)

    Docker私有倉(cāng)庫(kù)打開(kāi)2375端口的實(shí)現(xiàn)

    本文主要介紹了Docker私有倉(cāng)庫(kù)打開(kāi)2375端口的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 高效Docker鏡像構(gòu)建與部署實(shí)戰(zhàn)指南

    高效Docker鏡像構(gòu)建與部署實(shí)戰(zhàn)指南

    在微服務(wù)架構(gòu)和容器化快速發(fā)展的背景下,Docker鏡像已成為應(yīng)用發(fā)布的標(biāo)準(zhǔn)單元,本文將從鏡像構(gòu)建到部署全流程,分享團(tuán)隊(duì)的實(shí)戰(zhàn)經(jīng)驗(yàn)與踩坑解決方案
    2025-07-07
  • 刪除Docker鏡像、容器和卷的教程指南

    刪除Docker鏡像、容器和卷的教程指南

    Docker 可以輕松地將應(yīng)用程序和服務(wù)封裝在容器中,以便在任何地方運(yùn)行,然而,在使用 Docker 的過(guò)程中,很容易積累大量未使用的鏡像、容器和數(shù)據(jù)卷,這些會(huì)使輸出雜亂,并占用磁盤(pán)空間,所以本文給大家介紹了如何刪除Docker鏡像、容器和卷,需要的朋友可以參考下
    2024-10-10
  • Docker 修改文件是否需要重啟(命令詳解)

    Docker 修改文件是否需要重啟(命令詳解)

    這篇文章主要介紹了Docker 修改文件是否需要重啟(命令詳解)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • docker 設(shè)置windows存儲(chǔ)路徑的操作

    docker 設(shè)置windows存儲(chǔ)路徑的操作

    這篇文章主要介紹了docker 設(shè)置windows存儲(chǔ)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • docker中nginx的默認(rèn)路徑位置和映射目錄啟動(dòng)方式

    docker中nginx的默認(rèn)路徑位置和映射目錄啟動(dòng)方式

    這篇文章主要介紹了docker中nginx的默認(rèn)路徑位置和映射目錄啟動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 使用Docker Compose搭建 Confluence的教程

    使用Docker Compose搭建 Confluence的教程

    本文將介紹如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看過(guò)之前的內(nèi)容,跟隨本文應(yīng)該能在十分鐘內(nèi)解決戰(zhàn)斗,感興趣的朋友快來(lái)看看吧
    2021-06-06
  • Docker部署Graylog日志管理系統(tǒng)

    Docker部署Graylog日志管理系統(tǒng)

    Graylog是一個(gè)開(kāi)源的日志管理平臺(tái),支持強(qiáng)大的搜索功能,本文主要介紹了Docker部署Graylog日志管理系統(tǒng),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03

最新評(píng)論

庆元县| 南部县| 江华| 长宁区| 清水河县| 炎陵县| 台南市| 华容县| 临夏县| 古交市| 绩溪县| 鄂州市| 固原市| 开鲁县| 双城市| 施秉县| 万盛区| 额济纳旗| 乐陵市| 万州区| 余江县| 玉山县| 大洼县| 苍山县| 京山县| 密山市| 遂昌县| 裕民县| 江永县| 长兴县| 龙里县| 东明县| 富宁县| 荔波县| 灌南县| 布拖县| 无锡市| 石棉县| 阿克| 安阳市| 屏山县|