日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

10-Docker 网络

發(fā)布時(shí)間:2025/3/8 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10-Docker 网络 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

10-Docker 網(wǎng)絡(luò)

基礎(chǔ)網(wǎng)絡(luò)概念

數(shù)據(jù)傳輸通過(guò)數(shù)據(jù)包

兩臺(tái)筆記本之間通信是通過(guò)數(shù)據(jù)包通信的。想知道數(shù)據(jù)包是怎么打包的呢,就先要知道網(wǎng)絡(luò)分層的概念。

網(wǎng)絡(luò)分層

目前有兩種網(wǎng)絡(luò)分層的模型。

  • ISO/OSI 分層,也就是 7 層模型。
  • TCP/IP 分層,也就是 5 層模型。

TCP/IP 是目前最流行的分層模型。

TCP/IP模型

  • 最底層物理層 也就是 傳輸介質(zhì),像 網(wǎng)線,光纖…
  • 網(wǎng)絡(luò)接口層,主要是一些網(wǎng)絡(luò)協(xié)議
  • IP 層,這一層比較重要,比如想連接目標(biāo),需要目標(biāo)的ip地址和自身ip地址
  • 傳輸層,tcp/udp
  • 應(yīng)用層,主要是應(yīng)用的協(xié)議,如http,ssh…

路由的概念

我們?cè)诘貓D中搜索一個(gè)地點(diǎn),我們可能獲得很多路徑,我們從中選擇一條路徑,這就是現(xiàn)實(shí)中的路由概念。

那么在網(wǎng)絡(luò)中會(huì)有路由器幫我們選擇哪一條路徑進(jìn)行傳輸,路由本身涉及很多知識(shí)點(diǎn),不做介紹。

IP地址和路由

IP地址是唯一標(biāo)識(shí)設(shè)備的,如果我們想連接目標(biāo)地址,那么傳輸?shù)臄?shù)據(jù)內(nèi)要包含我們的源地址和目的地址。這樣才知道一發(fā)一回才知道發(fā)給誰(shuí)。

我們?cè)谠L問(wèn)的過(guò)程中,會(huì)經(jīng)過(guò)很多路由,比如 電信運(yùn)行商。

公有IP和私有IP

  • Public IP : 互聯(lián)網(wǎng)上的唯一標(biāo)識(shí),可以訪問(wèn)internet
  • Private IP : 不可在互聯(lián)網(wǎng)上使用,僅供機(jī)構(gòu)內(nèi)部使用

那么如果我想通過(guò)私有IP訪問(wèn)互聯(lián)網(wǎng)怎么辦?這里就需要用到網(wǎng)絡(luò)地址轉(zhuǎn)換 NAT 技術(shù)。

比如說(shuō) 校園網(wǎng),那么這個(gè)校園網(wǎng)有一個(gè)出口,而且有一個(gè)公有的 ip 地址, 學(xué)生及老師都是使用私有ip地址,那么當(dāng)學(xué)生或老師訪問(wèn)互聯(lián)網(wǎng)的時(shí)候,會(huì)將數(shù)據(jù)發(fā)送到 學(xué)校的路由器上,然后路由器會(huì)對(duì)這條信息做 NAT 地址轉(zhuǎn)換。

轉(zhuǎn)換過(guò)程為,NAT 會(huì)記錄源地址(source)和目標(biāo)地址(dest),然后轉(zhuǎn)換成公網(wǎng)的ip地址,然后發(fā)送出去,當(dāng)發(fā)送回來(lái)的時(shí)候,NAT 會(huì)查詢本地存儲(chǔ)的表然后轉(zhuǎn)換回內(nèi)部的私有ip地址。

這里我們要先介紹兩個(gè)工具 Ping(ICMP)Telnet

  • ping 可以判斷IP的可達(dá)性
  • telnet 檢查服務(wù)的可用性,比如一個(gè) web服務(wù)器 80/443 端口

案例:

ping www.imooc.com # 慕課網(wǎng),這里是不能ping 通的,可能是防火墻的原因

使用telnet

telnet www.imooc.com 80

這里可以成功訪問(wèn),說(shuō)明慕課網(wǎng)的這個(gè)ip地址是不可達(dá)的,但是 80端口的服務(wù)是可達(dá)的。

實(shí)例分析

  • 創(chuàng)建一個(gè)容器

    docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done"
  • busybox 是一個(gè)最小化的 linux 鏡像。

  • 進(jìn)入容器內(nèi)部

    docker exec -it test1 /bin/sh
  • 查看網(wǎng)絡(luò)

    $: ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever 21: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ffinet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever

    然后退出

    exit

    查看宿主機(jī)器的網(wǎng)絡(luò)

    ip a

    此時(shí)這里面的網(wǎng)絡(luò)和剛剛?cè)萜鲀?nèi)的網(wǎng)絡(luò)是完全隔離的,原理是通過(guò) linux net namespace 技術(shù)進(jìn)行隔離的

  • 再次創(chuàng)建一個(gè)容器

    docker run -d --name test2 busybox /bin/sh -c "while true; do sleep 3600; done"
  • 查看網(wǎng)絡(luò)

    docker exec test2 ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever 23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ffinet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever

    我們?cè)俅尾榭匆幌?test1 容器的ip

    docker exec test1 ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever 21: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ffinet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever

    我們可以發(fā)現(xiàn) test1 的 ip 為 172.17.0.2,而 test2 為172.17.0.3。

  • 進(jìn)入 test1 容器

    docker exec -it test1 /bin/sh

    ping test2 容器ip

    ping 172.17.0.3

    我們發(fā)現(xiàn)可以ping通,說(shuō)明兩個(gè)容器之間是網(wǎng)絡(luò)互通的。

  • 總結(jié)

    以上是生活随笔為你收集整理的10-Docker 网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。