1. 程式人生 > >docker入門之虛擬網路概述

docker入門之虛擬網路概述

docker 入門之虛擬網路概述

一、什麼是虛擬化網路1)名稱空間2)裝置和名稱空間3)虛擬網路裝置4)虛擬網橋4.1)單個網橋4.2)兩個網橋--同IP段4.3)兩個網橋--不同IP段二、容器網路-NAT模式三、容器網路-橋接模式

一、什麼是虛擬化網路

1)名稱空間

在前面我們瞭解過,名稱空間一共有六種:
1.UTS:主機名和域名
2.User:使用者和使用者組
3.Mount:檔案系統
4.IPC:訊號量、訊息佇列和共享記憶體
5.PID:程序編號
6.Network:網路裝置、網路棧、埠等

今天我們要了解的是Network

2)裝置和名稱空間

一個裝置只能屬於一個名稱空間,如果將一個網絡卡分配給單獨的名稱空間,那麼這個網絡卡對於其他名稱空間來說是不可見的。

3)虛擬網路裝置

Linux支援的二層裝置三層裝置的虛擬化,其中網絡卡屬於二層裝置。

虛擬網絡卡:在Linux中,虛擬網絡卡總是成出現

虛擬網橋裝置:用一個軟體模擬一個交換機

4)虛擬網橋

在伺服器安裝了docker之後,docker應用會建立一個名為docker0的網橋,地址為172.17.0.1

[[email protected] ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17
.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:ceff:fe71:2880  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ce:71:28:80
  txqueuelen 0  (Ethernet)
        RX packets 15  bytes 1164 (1.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 31  bytes 3052 (2.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4.1)單個網橋

單個網橋單個網橋

因為在虛擬網路中,網絡卡總是以的方式出現,所以但我們建立了一個容器之後,如果該容器使用了網橋,那麼這時候伺服器上會多出一個虛擬的網絡卡,而這個網絡卡被繫結在網橋上,另個網絡卡在容器中。

為了驗證以上理論,我們可以使用docker container ps 檢視容器個數,然後再使用ifconfig 檢視虛擬網絡卡個數。其中以vet開頭的網絡卡為docker的虛擬網絡卡。

[[email protected] ~]# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d1745c9b3c8e        web1:v2             "/bin/httpd -f -h /d…"   7 days ago          Up 7 days                               http_1
2e45357a5285        busybox             "sh"                     7 days ago          Up 7 days                               b1
[[email protected] ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:8b:ab:21 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.75/24 brd 192.168.100.255 scope global dynamic ens160
       valid_lft 52420sec preferred_lft 52420sec
    inet6 fe80::3781:c50a:ba27:fb89/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ce:71:28:80 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:ceff:fe71:2880/64 scope link 
       valid_lft forever preferred_lft forever
13[email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 8e:8d:c8:b2:44:d0 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::8c8d:c8ff:feb2:44d0/64 scope link 
       valid_lft forever preferred_lft forever
17[email protected]: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 2a:24:5c:84:e5:c3 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::2824:5cff:fe84:e5c3/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] ~]

可以看出現在伺服器上有兩個容器,相對應的,伺服器多了兩塊虛擬的網絡卡,那麼怎麼去驗證這兩個虛擬網絡卡是否真的如我們所說的一樣,是屬於docker0網橋的呢?我們可以使用brctl去檢視

[[email protected] ~]# brctl show
bridge name    bridge id       STP enabled interfaces
docker0        8000.0242ce712880   no      veth3487b78
                                            vethc9f32ca

通過上下對比,我們應該能驗證之前的結論了吧!

單個網橋的通訊:在上圖中,不難發現,假設S1和S2需要通訊,可以直接通過網橋doker0進行通訊。

4.2)兩個網橋--同IP段

兩個網橋--同ip段兩個網橋--同ip段

當兩個網橋連線的容器處於同一個IP段,那麼兩個網橋之間的通訊也十分簡單,我們只需要兩個虛擬的網絡卡將兩個網橋進行連線即可。

4.3)兩個網橋--不同IP段

兩個網橋--不同IP段兩個網橋--不同IP段

當兩個docker網橋所連線的容器處於不同的IP地址段時,S1和S3之間的通訊就顯得沒那麼容易了…
S1和S3所屬的網段不同,意味著兩個容器必須要通過閘道器才能尋找到對方,即使他們在一臺伺服器中!如果是簡單的通訊,那麼我們可以開啟Linux Kernel中的轉發功能,實現兩個網段的通訊。在上圖中,我們在兩個docker網橋中間多加了一個容器,該容器可以只用來處理轉發流量或者實現NAT等功能,這樣也可以實現同一伺服器上不同的網橋之間通訊。

二、容器網路-NAT模式

在docker中,預設的網路模式為NAT模式,在安裝了docker之後,可以發現iptables的NAT鏈多了幾條規則。

[[email protected] ~]# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 404K packets, 36M bytes)
 pkts bytes target     prot opt in     out     source               destination         
   80  5420 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 82399 packets, 8968K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 12551 packets, 755K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    

相關推薦

docker入門虛擬網路概述

docker 入門之虛擬網路概述 一、什麼是虛擬化網路1)名稱空間2)裝置和名稱空間3)虛擬網路裝置4)虛擬網橋4.1)單個網橋4.2)兩個網橋--同IP段4.3)兩個網橋--不同IP段二、容器網路-NAT模式三、容器網路-橋接模式 一、什麼是虛擬化網路 1)名稱空間 在前面我們瞭解

docker容器技術虛擬化網路概述(四)

前一篇文章連結:Docker容器技術之映象管理基礎(三)   目錄 一、docker網路簡介 1、 虛擬網路通訊的三種方式 1.1、橋接網路: 什麼是MAC: 1.2、NAT網路: 1.3、Overlay Network 2、

[虛擬化]連載No3虛擬網路+Docker映象模擬雲伺服器搭建

本次任務: 1: 宿主機配置一塊虛擬橋接模式網絡卡 2:使用docker映象製作可以ssh登入的虛擬機器 3:配置虛擬機器橋接網路,獨立ip可以保證外部登入[不走埠對映]==========宿主機配置虛擬橋接網絡卡在Linux上建立橋裝置===========首先最開始的網路

Docker入門docker的安裝

Docker初體驗 Docker 簡介 Docker有兩個版本: 社群版(CE) 企業版(EE) Docker Community Edition(CE)非常適合希望開始使用Docker並嘗試使用基於容器的應用程式的個人開發人員和小型團隊。 Docker企業版(EE)專為企業

Docker 入門容器

原文地址:https://renguangli.com/articles/docker-container Docker容器常用命令介紹和使用 檢視容器 使用docker ps命令檢視執行著的容器 [[email protected] ~]# do

docker入門映象

原文地址:https://renguangli.com/articles/docker-image docker映象類似於虛擬機器映象,可以將它理解為一個只讀的模板。例如,一個映象可以包含一個基本的作業系統,裡面安裝了tomcat(或者其它軟體),我們把它稱為tomca

docker入門安裝

原文地址:https://renguangli.com/articles/docker-install Centos下安裝docker 系統要求:64為作業系統,核心版本至少為3.10 docker目前支援Centos6.5及以後的版本 yum安裝 執行以下

docker入門簡介

什麼是docker Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。 Docker 最初是 dotCloud 公司創始

docker入門映象管理基礎

docker映象管理基礎 首發:arppinging 一、映象概述 1.1 聯合掛載 在之前的文章我們提到過,容器是基於映象啟動的,映象的儲存驅動是overlay2 overlayFS將單個Linux主機上的兩個目錄合成一個目錄,這些目錄稱為層,統一過程被稱為聯合掛載。 下圖是一個docker映象

docker入門鏡像管理基礎

hour pod rap tags ESS 應該 操作 其中 work docker鏡像管理基礎 首發:arppinging 一、鏡像概述 1.1 聯合掛載 在之前的文章我們提到過,容器是基於鏡像啟動的,鏡像的存儲驅動是overlay2 overlayFS將單個Linux主

Docker入門-1簡介與安裝

一、簡介 a、為什麼出現docker?       一款產品從開發到上線,從作業系統,到執行環境,再到應用配置。作為開發+運維之間的協作我們需要關心很多東西,這也是很多網際網路公司都不得不面對的問題,特別是各種版本的迭代之後,不同版本環境的相容,對運維人員都是考驗 Doc

Docker入門構建Springboot專案釋出在映象環境

在之前,簡單的講了一下docker環境的搭建,這裡就說一下docker的專案部署,如springboot專案如何執行在docker環境中 這裡其實主要就是在原有下載映象的基礎上進行重新構建。

Docker實踐(2)—虛擬網路

1 docker(container)的虛擬網路 docker的虛擬網路結構:   host建立一個虛擬bridge,每個container對應一個虛擬網路裝置(TAP裝置),與bridge一起構成一個虛擬網路,並通過虛擬bridge相互通訊。 Host的物理網路裝置eth0作為內部虛擬網路的NAT閘

Docker入門 - 如何安裝Docker CE

subst 停止 ESS api line 虛擬化 虛擬 attr conf 原文:Docker入門之 - 如何安裝Docker CE

docker入門基礎操作

light war start entos vmware rep pos 導出 備份 docker,我們可以把docker當作是簡單的虛擬機。但這個虛擬機不像vm一樣安裝系統。所以我們又稱之為容器。你可以理解成,容器就是虛擬機 docker與vm的對比 vmware

神經網路模型入門模型概述

1.前言 走在機器學習的路上, 學習之初,參考《Tensor Flow 實戰》,其中很多概念無法理解,敘述不懂其意,理解內容更無從談起。需要回頭學習基礎知識。 人工智慧的基礎模型是神經網路,在此基礎上發展出更多複雜的技術,比如機器學習。 2.神經網路結構

vsphere入門虛擬交換機創建並管理ESXI網絡

虛擬化 分布式交換機 標準交換機 楊書凡 esxi網絡管理 之前介紹了vSphere虛擬化平臺的ESXi和vCenter的部署方法。本篇博客主要介紹VMware vSphere的網絡管理,網絡是vSphere的基礎,所有ESXi的虛擬機都通過網絡來進行通信。通常在物理網絡中需要使用

Docker入門與應用系列(八)Docker圖形界面管理Shipyard

tps 數據庫 sock blog ocs body mage 代理 cell Shipyard基於Docker API實現的容器圖形管理系統,支持container、images、engine、cluster等功能,可滿足我們基本的容器部署需求可堆棧的Docker管理基於

Docker入門與應用系列(七)Docker圖形界面管理DockerUI

post 簡單的 技術分享 name mage src 入門 .com 系統 1.dockeruiDockerrUI是一個基於Docker API提供圖形化頁面簡單的容器管理系統,支持容器管理、鏡像管理。1.1 下載鏡像 docker pull abh1nav/doc

Docker入門實踐dokerfile編寫

DockerDockerfile是一個文本格式的配置文件,通過dockerfile可以快速創建自定義鏡像以適應測試,預發布,生產環境等各種應用部署鏡像,一個好的dockerfile可以讓我們的鏡像更方便管理以及應用。 一. Dokerfile的基本結構 Dockfile是由一行行命令語句組成,並且遲滯以#開頭