欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker網(wǎng)絡進行容器通信與隔離之道的實踐指南

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

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

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

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

1.2 常見網(wǎng)絡類型

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

二、網(wǎng)絡命令

docker network create

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

語法:

docker network create [OPTIONS] NETWORK

關鍵參數(shù):

  • d, --driver:網(wǎng)絡驅(qū)動
  • --gateway:網(wǎng)關地址
  • --subnet:表示網(wǎng)段的 CIDR 格式的子網(wǎng)
  • --ipv6:啟用 ipv6

示例:

docker network inspect

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

語法:

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

關鍵參數(shù):

-f, --format: 指定格式

示例:

docker network connect

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

語法:

docker network connect [OPTIONS] NETWORK CONTAINER

關鍵參數(shù):

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

示例:

docker network disconnect

功能:斷開網(wǎng)絡

語法:

docker network disconnect [OPTIONS] NETWORK CONTAINER

關鍵參數(shù):

-f:強制斷開

示例:docker network disconnect web1 mybox1

docker network prune

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

語法:

docker network prune [OPTIONS]

關鍵參數(shù):

  • -f, --force:不提示

示例:

docker network rm

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

語法:

docker network rm NETWORK [NETWORK...]

關鍵參數(shù):

-f: 強制刪除

示例:

docker network ls

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

語法:

docker network ls [OPTIONS]

別名:docker network list

關鍵參數(shù):

  • -f, --filter: 指定過濾條件
  • --format: 指定格式
  • --no-trunc: 不截斷
  • -q,--quiet:僅僅顯示id

示例:

三、網(wǎng)絡模式的設置

docker Bridge網(wǎng)絡

bridge網(wǎng)絡結構:

              +---------------+
              |   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)建容器時沒有使用--network參數(shù)指定網(wǎng)絡時,默認連接到docker模式。

注意:docker 自定義橋接網(wǎng)絡支持通過Docker DNS服務進行域名解析,也就是我們可以直接通過使用容器名進行通信,因為DNS服務可以解析容器名到IP地址的映射,但是默認的Bridge網(wǎng)絡時不支持DNS的。

案例:讓兩個容器連接到同一個自定義網(wǎng)絡進行通信

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

docker network create web1

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

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

3.進入box1容器檢驗是否能與box2通信

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

4.進入box2容器檢驗是否能與box1通信

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

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

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

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

  • docker exec -it box3 sh
  • ping box1

效果如下:

注意:容器啟動后,Docker 有時不會明確提示運行結果(成功 / 失敗),因此建議每次啟動容器后,通過docker psdocker ps -a命令檢查容器狀態(tài)。

3.1 host網(wǎng)絡

host網(wǎng)絡結構:

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

示例:

運行容器使用host網(wǎng)絡

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

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

  • ifconfig
  • docker exec -it box4 ifconfig

該模式的缺點:宿主機和容器的端口是共用的,無隔離,所以不能讓它們用相同的端口。

測試:

因為將宿主機nginx服務啟動(默認是80端口)

nginx

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

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

檢查該容器是否在正常運行

  • docker ps
  • docker ps -a

3.2 container網(wǎng)絡

container網(wǎng)絡結構:

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

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

示例:

啟動box5容器以container模式連接到box1

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

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

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

斷開box1的網(wǎng)絡,檢查box5網(wǎng)絡變化

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

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

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

3.3 none網(wǎng)絡

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

示例:

創(chuàng)建并啟動容器,網(wǎng)絡設置為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)絡進行容器通信與隔離之道的實踐指南的詳細內(nèi)容,更多關于Docker網(wǎng)絡容器通信的資料請關注腳本之家其它相關文章!

相關文章

  • Docker API 未授權訪問漏洞問題解析

    Docker API 未授權訪問漏洞問題解析

    這篇文章主要介紹了Docker API 未授權訪問漏洞問題解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • docker部署confluence的完整步驟

    docker部署confluence的完整步驟

    這篇文章主要介紹了docker部署confluence的完整步驟,這里的鏡像并不是小編自己寫的是基于他人打包的文中有詳細介紹,需要的朋友可以參考下
    2021-06-06
  • 在docker容器中調(diào)用和執(zhí)行宿主機的docker操作

    在docker容器中調(diào)用和執(zhí)行宿主機的docker操作

    這篇文章主要介紹了在docker容器中調(diào)用和執(zhí)行宿主機的docker操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • windows?10安裝和使用docker

    windows?10安裝和使用docker

    這篇文章介紹了windows?10安裝和使用docker的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Docker安裝Nginx問題及錯誤分析

    Docker安裝Nginx問題及錯誤分析

    這篇文章主要介紹了Docker安裝Nginx的問題及錯誤分析正確的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • Docker調(diào)度器Kubernetes使用過程

    Docker調(diào)度器Kubernetes使用過程

    Docker和Kubernetes在使用方式上有相似性,初次接觸這兩個技術的同學常常會搞混,但實際上它們并不是解決同一個問題的技術,也沒有辦法用其中一個替代另一個。通俗一點來說,Docker解決的是容器技術直接相關的問題,而Kubernetes更多地關注在集群上調(diào)度和部署容器應用
    2022-12-12
  • Docker啟動安裝nacos的實現(xiàn)示例

    Docker啟動安裝nacos的實現(xiàn)示例

    本文主要介紹了Docker啟動安裝nacos的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • docker安裝drone的實現(xiàn)示例

    docker安裝drone的實現(xiàn)示例

    Drone是一款基于Docker的持續(xù)集成和持續(xù)部署平臺,可以幫助開發(fā)者自動化構建、測試和部署應用程序,本文主要介紹了docker安裝drone的實現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • Docker內(nèi)置網(wǎng)絡模式分析

    Docker內(nèi)置網(wǎng)絡模式分析

    這篇文章主要為大家介紹了Docker內(nèi)置網(wǎng)絡模式分析及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 通過docker 部署minio的方法(端口號為9105)

    通過docker 部署minio的方法(端口號為9105)

    通過Docker部署MinIO對象存儲服務,并指定API端口為9105,下面給大家分享實現(xiàn)步驟,感興趣的朋友一起看看吧
    2024-12-12

最新評論