0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker容器網(wǎng)絡(luò)的數(shù)據(jù)鏈路是什么

汽車電子技術(shù) ? 來源:碼農(nóng)與軟件時代 ? 作者:碼農(nóng)與軟件時代 ? 2023-02-15 09:56 ? 次閱讀

單主機容器網(wǎng)絡(luò)可能存在多個docker,分屬于不同的bridge,它們之間有通信的需求。其基礎(chǔ)的數(shù)據(jù)鏈路為:

圖片

下面進行數(shù)據(jù)鏈路的分析。

一、環(huán)境信息

  1. 系統(tǒng)環(huán)境
操作系統(tǒng)為ubuntu14.04;
Docker version 17.05.0-ce
  1. 查看容器網(wǎng)絡(luò):docker network list
NETWORK ID          NAME                DRIVER              SCOPE
844c74ceea9d        bridge              bridge              local
93b0f2d679ed        docker_gwbridge     bridge              local
baa5b46a5057        host                host                local
852747e4d566        none                null                local

默認(rèn)提供bridge模式的容器網(wǎng)絡(luò)。

二、Docker基礎(chǔ)鏈路

  1. 啟動docker服務(wù)后,一個名為docker0的Linux bridge被創(chuàng)建,默認(rèn)子網(wǎng)是172.17.0.0/16,docker0的地址是172.17.0.1。

(1)查詢網(wǎng)絡(luò)設(shè)備:ifconfig

docker0   Link encap:Ethernet  HWaddr 02:42:93:6f:2e:4f  
inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
inet6 addr: fe80::42:93ff:fe6f:2e4f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
          RX bytes:1204 (1.2 KB)  TX bytes:6659 (6.6 KB)
eth0      Link encap:Ethernet  HWaddr fa:16:3e:2e:6d:3f  
inet addr:30.0.1.48  Bcast:30.0.1.255  Mask:255.255.255.0
inet6 addr: fe80::f816:3eff:fe2e:6d3f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
RX packets:28352 errors:0 dropped:0 overruns:0 frame:0
TX packets:23242 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:56315936 (56.3 MB)  TX bytes:1637368 (1.6 MB)


lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:480 (480.0 B)  TX bytes:480 (480.0 B)

(2)查看容器網(wǎng)絡(luò)bridge的配置信息

docker network inspect bridge

[
    {
"Name": "bridge",
"Id": "844c74ceea9d98cd31a7bb7c0298894cecf8ba1b175dc74824c3688490336a3c",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
                {
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
                }
            ]
        }       
    }
]
  1. Docker會對從docker0流向外部的數(shù)據(jù)包進行NAT操作。這樣就可以使得多個容器共享宿主機IP地址,與其他主機的實體進行通信。

(1)查看路由:ip route

default via 30.0.1.1 dev eth0 
30.0.1.0/24 dev eth0  proto kernel  scope link  src 30.0.1.48
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1

說明:iproute2的ip route命令與net-tools的route命令類似。

(2)查看iptables規(guī)則鏈:iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL


Chain INPUT (policy ACCEPT)
target     prot opt source               destination         


Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL


Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        anywhere            
MASQUERADE  all  --  bogon/16             anywhere            


Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere

Docker的基礎(chǔ)鏈路信息為:

圖片

三、Docker的數(shù)據(jù)鏈路

1.單bridge

不指定網(wǎng)絡(luò)選項的情況下,創(chuàng)建新容器將默認(rèn)在docker0,IP地址為172.17.0.0/16的一個未使用地址,通常按順序分配,如172.17.0.2、172.17.0.3。

(1)啟busydox容器:docker run -it -d --name=box3 busybox

說明:busybox集成常用的linux命令和工具的軟件,適應(yīng)于資源有限的嵌入式系統(tǒng),可以看作精簡版的shell。

(2)查看docker進程:docker ps

CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
b2a846aef8c3        busybox             "sh"                 2 hours ago         Up 2 hours

(3)進入docker容器:docker exec -it b2a8 sh

/ # busybox ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:7996 (7.8 KiB)  TX bytes:0 (0.0 B)


lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

(4)訪問外網(wǎng):ping www.baidu.com。默認(rèn)情況下,連接到docker0上的容器可以進行通信。

(5)刪除SNAT規(guī)則,以序號標(biāo)記查詢iptables規(guī)則,執(zhí)行:iptables -L -n --line-numbers

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL


Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         


Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL


Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
6    MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0           
7    MASQUERADE  all  --  172.18.0.0/16        0.0.0.0/0           


Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
2    RETURN     all  --  0.0.0.0/0            0.0.0.0/0

這里可以看到POST ROUTING鏈,源地址為172.17.0.0,目的地址是任意地址。數(shù)據(jù)包通過這個鏈時,便執(zhí)行了NAT操作。

刪除序號為6的規(guī)則(172.17.0.0/16):iptables -t nat -D POSTROUTING 6

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL


Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         


Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL


Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
6    MASQUERADE  all  --  172.18.0.0/16        0.0.0.0/0           


Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
2    RETURN     all  --  0.0.0.0/0            0.0.0.0/0

說明:MASQUERADE與SNAT類似,可以從服務(wù)器的網(wǎng)卡上自動獲取當(dāng)前ip地址來做NAT。

此時,ping www.baidu.com,則無法訪問。

這樣,單個主機的Docker容器網(wǎng)絡(luò)為:

圖片

再新啟docker進程,docker run -it -d --name=busybox1 busybox

Docker容器網(wǎng)絡(luò)為:

圖片

2.雙bridge

默認(rèn)情況下,連接到docker0上的容器可以進行通信,但不同bridge上的容器是無法通信的。

(1)創(chuàng)建名為nwtest的bridge,子網(wǎng)為10.0.0.0/24

docker network create --driver=bridge --subnet=10.0.0.0/24 nwtest

(2)查看網(wǎng)絡(luò)設(shè)備:ifconfig

br-8d3ef22d71a6 Link encap:Ethernet  HWaddr 02:42:11:0d:c7:67  
inet addr:10.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)




docker0   Link encap:Ethernet  HWaddr 02:42:c9:84:d8:fc  
inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
inet6 addr: fe80::42:c9ff:fe84:d8fc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:4667 (4.6 KB)




lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:480 (480.0 B)  TX bytes:480 (480.0 B)




vethdb9a3fb Link encap:Ethernet  HWaddr 7e:9c:93:1d:1d:81  
inet6 addr: fe80::7c9c:93ff:fe1d:1d81/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:7996 (7.9 KB)




vethec487c4 Link encap:Ethernet  HWaddr 6e:90:8e:40:5c:1d  
inet6 addr: fe80::6c90:8eff:fe40:5c1d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:3399 (3.3 KB)

(3)查看docker網(wǎng)絡(luò):docker network list

NETWORK ID          NAME                DRIVER              SCOPE
57d56a34c3c8        bridge              bridge              local
93b0f2d679ed        docker_gwbridge     bridge              local
baa5b46a5057        host                host                local
852747e4d566        none                null                local
8d3ef22d71a6        nwtest              bridge              local

(4)新建Docker容器,執(zhí)行命令

dockerrun -it -d --network=nwtest --name=busybox6 busybox

(5)將容器busybox1關(guān)聯(lián)到網(wǎng)絡(luò)nwtest

dockernetwork connect nwtest busybox1

(5)容器busybox1執(zhí)行命令,測試是否能連通

docker exec -it 99f9 sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:7996 (7.8 KiB)  TX bytes:0 (0.0 B)


eth1      Link encap:Ethernet  HWaddr 02:42:0A:00:00:03  
inet addr:10.0.0.3  Bcast:0.0.0.0  Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:3398 (3.3 KiB)  TX bytes:0 (0.0 B)


lo        Link encap:Local Loopback  
inet addr:127.0.0.1  Mask:255.0.0.0
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/ # ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: seq=0 ttl=64 time=0.952 ms
64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.124 ms
64 bytes from 10.0.0.2: seq=2 ttl=64 time=0.188 ms
64 bytes from 10.0.0.2: seq=3 ttl=64 time=0.168 ms
64 bytes from 10.0.0.2: seq=4 ttl=64 time=0.186 ms
64 bytes from 10.0.0.2: seq=5 ttl=64 time=0.160 ms

綜上,Docker容器網(wǎng)絡(luò)的數(shù)據(jù)鏈路為:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    490

    瀏覽量

    22014
  • Bridge
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    11867
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    446

    瀏覽量

    11773
收藏 人收藏

    評論

    相關(guān)推薦

    Matlab仿真1090ES數(shù)據(jù)鏈

    本帖最后由 sy9576 于 2013-4-16 22:00 編輯 如題如題,求助各位大俠,如何在Matlab編程下仿真出1090ES數(shù)據(jù)鏈波形?{:16:}
    發(fā)表于 04-16 21:57

    如何利用Simulink進行猝發(fā)通信系統(tǒng)數(shù)據(jù)鏈系統(tǒng)仿真設(shè)計?

    未來戰(zhàn)場必是網(wǎng)絡(luò)中心戰(zhàn)格局下的系統(tǒng)一體化作戰(zhàn),用于制導(dǎo)的武器數(shù)據(jù)鏈是其中重要一環(huán)。通常武器數(shù)據(jù)鏈用于傳輸目標(biāo)信息,信息量小,但要求信息傳輸必須可靠,同時將來戰(zhàn)場通信處于復(fù)雜的電磁環(huán)境中,要求武器
    發(fā)表于 07-31 07:02

    武器數(shù)據(jù)鏈測試系統(tǒng)是什么組成的?

    傳統(tǒng)的武器數(shù)據(jù)鏈測試方法多以傳輸系統(tǒng)的靜態(tài)性能參數(shù)檢測為主,難以對數(shù)據(jù)鏈出現(xiàn)的瞬態(tài)異常情況做出正確地判定,更不可能對正常使用情況進行動態(tài)仿真測試,最終也就不能有效地保證數(shù)據(jù)鏈無故障可靠應(yīng)用。武器
    發(fā)表于 08-23 07:00

    基于isoSPI數(shù)據(jù)鏈的高可靠性車載電池系統(tǒng)設(shè)計

    isoSPI 數(shù)據(jù)鏈助力實現(xiàn)高可靠性車載電池系統(tǒng)
    發(fā)表于 09-02 14:23

    高級數(shù)據(jù)鏈控制的操作方式是什么?

      高級數(shù)據(jù)鏈控制涉及三種類型的站,即主站、從站和復(fù)合站?! ≈髡镜闹饕δ苁前l(fā)送命令(包括數(shù)據(jù)信息)幀、接收響應(yīng)幀,并負(fù)責(zé)對整個的控
    發(fā)表于 11-01 09:10

    基于數(shù)據(jù)鏈監(jiān)視的Ad Hoc網(wǎng)絡(luò)攻擊檢測機制

    移動Ad hoc網(wǎng)絡(luò)由于其動態(tài)拓?fù)?、無線信道的特點,特別容易受到各種攻擊的威脅。該文在安全路由協(xié)議的基礎(chǔ)上,針對流量模式類攻擊,提出一種基于數(shù)據(jù)鏈監(jiān)視的攻擊檢測機制
    發(fā)表于 04-17 09:18 ?17次下載

    數(shù)據(jù)鏈路層的作用

    數(shù)據(jù)鏈路層的作用:通過一些數(shù)據(jù)鏈路層協(xié)議和鏈路控制規(guī)程,在不太可靠的物理路上實現(xiàn)可靠的數(shù)據(jù)傳輸。 “
    發(fā)表于 07-22 16:04 ?6989次閱讀

    數(shù)據(jù)鏈協(xié)議,數(shù)據(jù)鏈協(xié)議是什么意思

    數(shù)據(jù)鏈協(xié)議,數(shù)據(jù)鏈協(xié)議是什么意思 數(shù)據(jù)鏈可以粗略地理解為
    發(fā)表于 03-18 15:07 ?671次閱讀

    高級數(shù)據(jù)鏈控制(HDLC)是什么意思

    高級數(shù)據(jù)鏈控制(HDLC)是什么意思 高級數(shù)據(jù)鏈控制(HDLC)協(xié)議是基于的一種數(shù)據(jù)鏈路層協(xié)議,促進傳送到下一層的
    發(fā)表于 03-18 15:30 ?1425次閱讀

    數(shù)據(jù)鏈交換,什么是數(shù)據(jù)鏈交換

    數(shù)據(jù)鏈交換,什么是數(shù)據(jù)鏈交換 DLSw是在IP(網(wǎng)際協(xié)議)網(wǎng)絡(luò)中封裝IBM SNA(系統(tǒng)網(wǎng)絡(luò)
    發(fā)表于 04-06 17:27 ?1045次閱讀

    工控軟件iFIX的數(shù)據(jù)鏈結(jié)構(gòu)及其應(yīng)用

    分析iFIX的 數(shù)據(jù)鏈 結(jié)構(gòu)和數(shù)據(jù)點的處理進程調(diào)度方式,針對流量補償計算、流量累積計算和流量控制組態(tài),采用編寫用戶程序的方式解決數(shù)字
    發(fā)表于 06-17 17:23 ?0次下載
    工控軟件iFIX的<b class='flag-5'>數(shù)據(jù)鏈</b><b class='flag-5'>路</b>結(jié)構(gòu)及其應(yīng)用

    數(shù)據(jù)鏈路層的功能

    數(shù)據(jù)鏈路層在物理層提供服務(wù)的基礎(chǔ)上向網(wǎng)絡(luò)層提供服務(wù),其主要作用是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數(shù)據(jù)鏈,使之對
    的頭像 發(fā)表于 02-21 16:49 ?1.4w次閱讀

    無人系統(tǒng)和地面控制站的加密數(shù)據(jù)鏈的演示

    此加密數(shù)據(jù)鏈演示代表無人系統(tǒng)和地面控制站之間的數(shù)據(jù)鏈。我們將演示從無人平臺到地面控制站的加密視頻
    的頭像 發(fā)表于 06-27 06:11 ?1643次閱讀

    docker容器刪除后數(shù)據(jù)還在嗎

    數(shù)據(jù)是否還會保留,這是一個需要深入分析和理解的問題。 本文將詳細(xì)探討Docker容器刪除后數(shù)據(jù)的存儲機制,從容器使用的存儲驅(qū)動、
    的頭像 發(fā)表于 11-23 09:32 ?1620次閱讀

    docker容器容器之間通信

    Docker容器之間的通信方式、通信過程以及常見的通信模式。 一、Docker容器之間的通信方式 在Docker中,
    的頭像 發(fā)表于 11-23 09:36 ?1323次閱讀