Docker學習筆記:Docker網絡

本文是自己的學習筆記


  • 1、Linux中的namespace
    • 1.1、創建namespace
    • 1.2、兩個namespace互相通信
  • 2、Docker中的namespace
    • 2.1 容器中的默認Bridge
  • 3、容器的三種網絡模式

1、Linux中的namespace

Docker中使用了虛擬網絡技術,讓各個容器的網絡隔離。好像每個容器從網卡到端口都有自己獨立的一套網絡架構。

namespace是實現網絡虛擬化的重要功能。

它原本是Linux系統的提供的功能,Docker借用這些namespace實現容器間的隔離。比如PIDnamespace可以實現進程間的隔離;User namespace實現用戶和組的隔離;而NET namespace實現網絡的隔離,這也是本篇文章的重點。

下面是用LinuxNET namespace實現網絡隔離的示例。

1.1、創建namespace

輸入ip a查看所有網卡。圖中顯示有四個。注意第一個網卡lo,接下來我會創建一個網絡namespace。這個namespace也會有一個同名的網卡,但是這兩個網卡是相互隔離的。

請添加圖片描述

現在添加一個namespace,命名為ns1

ip netns add ns1
請添加圖片描述

之后進入這個命名空間執行指令,查看這個命名空間的網卡,ip netns exec ns1 ip a

請添加圖片描述
里面也有一個lo網卡,但這個網卡和主機的lo是完全隔離的。
請添加圖片描述


1.2、兩個namespace互相通信

Linux 網絡中,veth-peer (Virtual Ethernet Peer) 指的是 veth (Virtual Ethernet) 設備對中的另一端。veth設備是一種特殊的虛擬以太網設備,它總是成對出現,可以把它想象成一根虛擬的網線。

我們在兩個namespace之間創建veth-pair來實現互相通信。

首先創建兩個namespace,分別命名為ns1ns2

之后用下面的指令啟動他們的lo網卡。

ip netns exec ns1 ifup lo
ip netns exec ns2 ifup lo

創建一個veth-pair

ip link add veth-ns1 type veth peer name veth-ns2

之后再查看網絡情況,第五和第六就是新建的一對veth

請添加圖片描述
veth-ns1設置到ns1veth-ns2設置到ns2

ip link set veth-ns1 netns ns1
ip link set veth-ns2 netns ns2

之后需要在ns1ns2中為這對veth分配地址。

ip netns exec ns1 ip addr add 192.168.0.11/24 dev veth-ns1
ip netns exec ns2 ip addr add 192.168.0.12/24 dev veth-ns2

然后分別到ns1ns2中啟動這對veth

ip netns exec ns1 ip link set veth-ns1 up
ip netns exec ns2 ip link set veth-ns2 up

這時候ns1ns2就可以互相ping通。

請添加圖片描述

ns1ns2之間的關系如下圖。
請添加圖片描述



2、Docker中的namespace

2.1 容器中的默認Bridge

Docker中,每個容器都有自己的一個namespace,他們之間的網絡相對獨立。

在默認情況下,這些容器之間也是可以直接相互通信的,不需要特別花心思去建立veth-pair

這是因為它們通常連接到同一個虛擬網絡,并且Docker為這個虛擬網絡提供了必要的網絡基礎設施和發現機制。

Docker 默認的網絡模式就是 橋接網絡 (Bridge Network)。當創建一個容器時沒有指定特定網絡時,容器內除了lo這個回路網卡,還會有一個類似于veth@if43名字的網卡。下圖是一個tomcat容器中的網絡情況,有一個veth@if24的網卡。

在這里插入圖片描述

這個veth@if43就是Linux中的虛擬網線veth,它就會默認連接到這個 docker0網橋。

當我們啟動任意一個容器時,查看宿主機的網絡也能看到docker0會自動創建出來。下圖就是啟動一個tomcat容器后,宿主機的網絡情況,有個docker0的網卡。
請添加圖片描述

下面啟動兩個tomcat容器,然后互相ping能看到網絡是互通的。

分別命名tomcat01tomcat02兩個容器并啟動。之后執行下面指令查看兩個容器的網絡情況。

docker exec -it tomcat01 ip a
docker exec -it tomcat02 ip a

可以看到tomcat01有一個網卡是eth0@if24,地址是172.17.0.2/16;而tomcat02則是eth2@if26,地址172.17.0.3/16

然后進入tomcat01去pingtomcat02的網卡。

docker exec -it tomcat01 ping 172.17.0.3

結果是網絡可達。
請添加圖片描述



3、容器的三種網絡模式

Dcoker給容器提供了三種網絡模式。

  • host:這個模式下容器將與Docker主機共享一套網絡架構。
  • none:這個模式下容器無法與外界甚至主機進行網絡交流。
  • bridge:容器的默認網絡模式。在這個模式下,容器擁有自己一套獨立的虛擬網絡架構。同時容器中會自動創建一對指向docker0veth-pairdocker0作為中轉站使所有容器網絡互通,同時容器也必須通過docker0才能和外界網絡溝通。

我們可以在容器啟動時指定網絡模式。

docker run -d --name my-tomcat-none --network none tomcat-ip:1.0



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87496.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用自定義注解解決excel動態表頭導出的問題

導入的excel有固定表頭動態表頭如何解決 自定義注解: import java.lang.annotation.*;/*** 自定義注解,用于動態生成excel表頭*/ Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface FieldLabel {// 字段中文String label(…

Android-EDLA 解決 GtsMediaRouterTestCases 存在 fail

問題描述:[原因]R10套件新增模塊,getRemoteDevice獲取遠程藍牙設備時,藍牙MAC為空 [對策]實際藍牙MAC非空;測試時繞過處理 1.release/ebsw_skg/skg/frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManage…

雙渦輪增壓器結構設計cad【5張】+設計說明書

摘要 隨著汽車制造商和消費者對動力性能的要求不斷增加,發動機需要在更寬的轉速范圍內提供更大的功率和扭矩。雙渦輪增壓器可以幫助實現這一目標,通過在不同轉速下調整渦輪的工作狀態來提供更平順的動力輸出。單一渦輪增壓器可能存在渦輪滯后和增壓延遲…

大數據輕量化流批一體架構探索實踐(一)

最近學習了解到一種輕量化,維護門檻較低的流批一體化的架構方式,雖然目前還是不太成熟,自己也在探索學習中。 dolphinschedulerdinkystarrocksflinkzookeper 后面我會逐步發一下這個整體架構的特點,以及各個組件作用,和…

【2025/07/04】GitHub 今日熱門項目

GitHub 今日熱門項目 🚀 每日精選優質開源項目 | 發現優質開源項目,跟上技術發展趨勢 📋 報告概覽 📊 統計項📈 數值📝 說明📅 報告日期2025-07-04 (周五)GitHub Trending 每日快照&#x1f55…

HarmonyOS學習記錄3

HarmonyOS學習記錄3 本文為個人學習記錄,僅供參考,如有錯誤請指出。本文主要記錄ArkTS基礎語法,僅記錄了部分我覺得與其他語言不太類似的地方,具體規范請參考官方文檔。 參考官方文檔:https://developer.huawei.com/co…

HKS201-M24 大師版 8K60Hz USB 3.0 適用于 2 臺 PC 1臺顯示器 無縫切換 KVM 切換器

HKS201-M24 8K60Hz HDMI 2.1 2x1 KVM 切換器,適用于 2 臺 PC,帶 EDID 仿真、千兆 LAN、雙充電和 USB 3.2 Gen 1 HKS201-M24 產品概述 TESmart 重新定義智能工作空間,無縫雙PC控制。 真正的 8K60Hz 亮度,具有 EDID 穩定性和超快速…

stm32f103vct6的DAC口的輸出電壓達不到3.3V

問題:調試時發現自己設置的DAC在最大時達不到3.3V,總結了原因,記錄下。 原因:使用時,注意有沒有其他負載,有的話最好給負載獨立供電,不要只用STM32f103的板湊活著供電,我的就是這個…

java8 Collectors.mapping 使用 例子 學習

java8 Collectors.mapping 使用 例子 學習 Map<String, List<String>> colorApple appleList.stream().collect(Collectors.groupingBy(Apple::getColor, Collectors.mapping(Apple::getVariety, toList()))); colorApple.forEach((k, v) -> {System.out.prin…

動態規劃-P1216 [IOI 1994] 數字三角形 Number Triangles

P1216 [IOI 1994] 數字三角形 Number Triangles 題目來源-洛谷題庫 思路 如果用貪心只是找當前的到達該點的路徑最大值&#xff0c;可能結果無法做到最優最值問題試著看能否將大問題分解成若干個小問題 走到a[i] [j ]這個點的最值來源于上一步a[i-1 ] [j]和a[i-1] [j-1]的最…

25年Java后端社招技術場景題!

一、電商領域高頻場景題1. 百萬級QPS秒殺系統設計場景需求&#xff1a;設計一個支持百萬級QPS的秒殺系統&#xff0c;要求解決超賣問題&#xff0c;保證系統高可用。技術方案&#xff1a;分層削峰&#xff1a;前端頁面靜態化按鈕防重復點擊Redis集群&#xff1a;采用Lua腳本實現…

牛客:HJ16 購物單【01背包】【華為機考】

學習要點 深入理解回溯深入理解01背包問題 題目鏈接 購物單_牛客題霸_牛客網 題目描述 解法1&#xff1a;回溯 其實此題非常符合取子集的邏輯&#xff0c;但是時間復雜度太高。通過11/14。想寫出來這個回溯過程&#xff0c;不容易。 #include <iostream> #include &l…

[學習記錄]Unity毛發渲染[URP]-Fin基礎版

鰭片法是一種在多邊形表面垂直添加許多多邊形&#xff0c;并在其上粘貼毛發紋理以營造毛茸茸的感覺的技術。這就像種植許多鰭&#xff08;就像魚身上的鰭一樣&#xff09;。本期我將在Unity6中實現一下基礎的Fin毛發&#xff0c;并不涉及光照著色。后面我會出一篇加上著色效果的…

指針篇(7)- 指針運算筆試題(阿里巴巴)

目錄 一、指針運算筆試題解析3.1 題目1&#xff1a;3.2 題目2&#xff1a;3.3 指針3&#xff1a;3.4 題目4&#xff1a;3.5 題目5&#xff1a;3.6 題目6&#xff1a;3.7 題目7&#xff1a; 總結 一、指針運算筆試題解析 3.1 題目1&#xff1a; #include<stdio.h> int m…

homebrew的一些常用方法

前言 因本人工作換到mac電腦&#xff0c;對包管理器homebrew的需求增加&#xff0c;因此將一些常用命令做如下記錄&#xff0c;本博客主要用作記錄用。 官網 macOS&#xff08;或 Linux&#xff09;缺失的軟件包的管理器 — Homebrew 常用命令 如果腳本因網絡問題無法下載…

【Python面試題】Python面試之基礎知識常見面試題3-匯總篇(精選30個)

目錄專欄導讀前言1. 字典的內存管理機制是什么&#xff1f;2. 列表的內存管理機制是什么&#xff1f;3. 元組和列表的區別4. 字符串插值的方法5. 閉包、裝飾器的原理閉包&#xff08;Closure&#xff09;裝飾器&#xff08;Decorator&#xff09;6. map、filter的區別7. range(…

【免費.NET方案】CSV到PDF與DataTable的快速轉換

CSV作為輕量級數據載體&#xff0c;在數據傳輸中占比超過70%。但其原生格式存在三大痛點&#xff1a; 可視化缺陷&#xff1a;無法直接生成可打印的報表結構限制&#xff1a;缺乏數據類型定義和關系約束安全風險&#xff1a;易被意外修改導致數據失真 因此&#xff0c;我們常…

connect的斷線重連

connect的短線重連 客戶端代碼的編寫服務器代碼的編寫總結 客戶端代碼的編寫 #include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h>…

通過觀看數百個外科手術視頻講座來學習多模態表征|文獻速遞-最新論文分享

Title題目Learning multi-modal representations by watching hundreds of surgical video lectures通過觀看數百個外科手術視頻講座來學習多模態表征01文獻速遞介紹外科計算機視覺領域的最新進展&#xff0c;已開始為手術室&#xff08;OR&#xff09;的新一代人工智能輔助支…

微信小程序如何實現再多個頁面共享數據

在微信小程序中&#xff0c;實現多個頁面共享數據有以下幾種常用方式&#xff0c;根據場景選擇最適合的方案&#xff1a; 全局變量&#xff08;App.js&#xff09; 適用場景&#xff1a;簡單數據共享&#xff08;非響應式&#xff09; 實現方式&#xff1a; javascript // ap…