1. 程式人生 > >Docker容器學習梳理--容器間網路通訊設定(Pipework和Open vSwitch)

Docker容器學習梳理--容器間網路通訊設定(Pipework和Open vSwitch)

自從Docker容器出現以來,容器的網路通訊就一直是被關注的焦點,也是生產環境的迫切需求。容器的網路通訊又可以分為兩大方面:單主機容器上的相互通訊,和跨主機的容器相互通訊。下面將分別針對這兩方面,對容器的通訊原理進行簡單的分析,幫助大家更好地使用docker。前面已經在Docker容器學習梳理--基礎知識(2)這一篇中詳細介紹了Docker的網路配置以及pipework工具。

docker單主機容器通訊

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 基於對net namespace的控制,docker可以為在容器建立隔離的網路環境,在隔離的網路環境下,容器具有完全獨立的網路棧,與宿主機隔離, 也可以使容器共享主機或者其他容器的網路名稱空間,基本可以滿足開發者在各種場景下的需要。 按docker官方的說法,docker容器的網路有五種模式: 1)bridge模式,--net=bridge(預設) 這是dokcer網路的預設設定,為容器建立獨立的網路名稱空間,容器具有獨立的網絡卡等所有單獨的網路棧,是最常用的使用方式。 在docker run啟動容器的時候,如果不加--net引數,就預設採用這種網路模式。安裝完docker,系統會自動新增一個供docker使用的網橋docker0,我們建立一個新的容器時,
容器通過DHCP獲取一個與docker0同網段的IP地址,並預設連線到docker0網橋,以此實現容器與宿主機的網路互通。 2)host模式,--net=host 這個模式下創建出來的容器,直接使用容器宿主機的網路名稱空間。 將不擁有自己獨立的Network Namespace,即沒有獨立的網路環境。它使用宿主機的ip和埠。 3)none模式,--net=none 為容器建立獨立網路名稱空間,但不為它做任何網路配置,容器中只有lo,使用者可以在此基礎上,對容器網路做任意定製。 這個模式下,dokcer不為容器進行任何網路配置。需要我們自己為容器新增網絡卡,配置IP。
因此,若想使用pipework配置docker容器的ip地址,必須要在none模式下才可以。 4)其他容器模式(即container模式),--net=container:NAME_or_ID 與host模式類似,只是容器將與指定的容器共享網路名稱空間。 這個模式就是指定一個已有的容器,共享該容器的IP和埠。除了網路方面兩個容器共享,其他的如檔案系統,程序等還是隔離開的。 5)使用者自定義:docker 1.9版本以後新增的特性,允許容器使用第三方的網路實現或者建立單獨的bridge網路,提供網路隔離能力。

這些網路模式在相互網路通訊方面的對比如下所示:

南北向通訊指容器與宿主機外界的訪問機制,東西向流量指同一宿主機上,與其他容器相互訪問的機制。

host模式

1 由於容器和宿主機共享同一個網路名稱空間,換言之,容器的IP地址即為宿主機的IP地址。所以容器可以和宿主機一樣,使用宿主機的任意網絡卡,實現和外界的通訊。其網路模型可以參照下圖

1 2 3 4 5 採用host模式的容器,可以直接使用宿主機的IP地址與外界進行通訊,若宿主機具有公有IP,那麼容器也擁有這個公有IP。同時容器內服務的埠也可以使用宿主機的埠, 無需額外進行NAT轉換,而且由於容器通訊時,不再需要通過linuxbridge等方式轉發或者資料包的拆封,效能上有很大優勢。 當然,這種模式有優勢,也就有劣勢,主要包括以下幾個方面: 1)最明顯的就是容器不再擁有隔離、獨立的網路棧。容器會與宿主機競爭網路棧的使用,並且容器的崩潰就可能導致宿主機崩潰,在生產環境中,這種問題可能是不被允許的。 2)容器內部將不再擁有所有的埠資源,因為一些埠已經被宿主機服務、bridge模式的容器埠繫結等其他服務佔用掉了。

bridge模式

1 2

相關推薦

Docker容器學習梳理--容器網路通訊設定(PipeworkOpen vSwitch)

自從Docker容器出現以來,容器的網路通訊就一直是被關注的焦點,也是生產環境的迫切需求。容器的網路通訊又可以分為兩大方面:單主機容器上的相互通訊,和跨主機的容器相互通訊。下面將分別針對這兩方面,對容器的通訊原理進行簡單的分析,幫助大家更好地使用docker。前面已經

Docker容器學習梳理-容器時間跟宿主機時同步

info 改變 日誌 time nat 並且 同步 統一 pre 在Docker容器創建好之後,可能會發現容器時間跟宿主機時間不一致,這就需要同步它們的時間,讓容器時間跟宿主機時間保持一致。如下:宿主機時間 [root@docker ~]# date Thu Jan 4

Docker容器學習梳理--容器登陸方法梳理(attach、exec、nsenter)

config .org app ron 簡單 dha entos ava dir 對於運行在後臺的Docker容器,我們運維人員時常是有登陸進去的需求。登陸Docker容器的方式:1)使用ssh登陸容器。這種方法需要在容器中啟動sshd,存在開銷和攻擊面增大的問題。同時也違

Docker容器學習梳理-容器硬盤熱擴容

config 下載 load 出現 wfs 調整 cal group order 前面已介紹了docker很多知識點的操作記錄,今天這裏梳理下docker容器空間擴展的操作。默認情況下,docker容器的空間是10G。在實際生產環境下,對docker容器進行熱擴容(動態擴容

Docker容器學習梳理-容器硬碟熱擴容

前面已介紹了docker很多知識點的操作記錄,今天這裡梳理下docker容器空間擴充套件的操作。預設情況下,物理機下建立的docker容器的空間是10G(虛擬機器下建立的docker容器空間就是虛擬機器的空間)。在實際生產環境下,對docker容器進行熱擴容(動態擴容)是

Docker系列五:Docke Bridge網路原理,容器網路通訊,對外通訊詳解

docker中兩個容器之間的網路是如何連線到一起的? 檢視本機的docker網路 docker network ls [[email protected] vagrant]# docker network ls NETWORK ID NAME

Docker 網路模式詳解及容器網路通訊

  當專案大規模使用 Docker 時,容器通訊的問題也就產生了。要解決容器通訊問題,必須先了解很多關於網路的知識。Docker 作為目前最火的輕量級容器技術,有很多令人稱道的功能,如 Docker 的映象管理。然而,Docker 同樣有著很多不完善的地方,網路方面就是 Docker 比較薄弱的部分。因此,我

Docker容器學習梳理--日常操作總結

容器 指定 reat 配置 捕獲 inf sse 是你 not 使用Docker已有一段時間了,今天正好有空梳理下自己平時操作Docker時的一些命令和註意細節:Docker 命令幫助$ sudo docker Commands: attach Attach

Docker容器學習梳理--手動制作系統鏡像

lba osi github 我們 dha 版本 記錄 密碼 發布 docker官方和個人發布的鏡像由於版本等各種原因,漏洞較多,已統計Docker Hub超過30%的官方鏡像包含高危漏洞。此外,由於網絡等原因也會造成docker pull下載鏡像的速度很慢。基於這種情況,

Docker容器學習梳理--SSH方式登陸容器

rman ati ava hosts pair als mman ane tab 本章介紹如果通過ssh方式登陸Docker容器的操作記錄(其實不太建議直接用ssh去連接上容器的想法,雖然可以,但是有很多弊端,而且docker已經提供了容器內執行的命令,沒有必要再折騰每一個

Docker容器學習梳理--web管理工具DockerUI部署記錄

iptable nds emc alt latest size acc 輸入 本機 Docker容器學習梳理--web管理工具DockerUI部署記錄 Docker提供一個平臺來把應用程序當作容器來打包、分發、共享和運行,它已經通過節省工作時間來拯救了成千上萬的系統管理員和

Docker容器學習梳理-Dockerfile構建鏡像

運行時 可執行 創建 管理 部分 重要 環境 每次 定制 在Docker的運用中,從下載鏡像,啟動容器,在容器中輸入命令來運行程序,這些命令都是手工一條條往裏輸入的,無法重復利用,而且效率很低。所以就需要一 種文件或腳本,我們把想執行的操作以命令的方式寫入其中,然後讓doc

Docker容器學習梳理--應用程式容器環境部署

轉:https://www.cnblogs.com/kevingrace/p/6425424.html 關於國內Docker映象,可以參考:Docker容器學習梳理--基礎知識(2) 的Docker映象使用。 如果我們需要在Docker環境下部署tomcat、redis、mysql

Docker容器學習梳理-Dockerfile構建映象

在Docker的運用中,從下載映象,啟動容器,在容器中輸入命令來執行程式,這些命令都是手工一條條往裡輸入的,無法重複利用,而且效率很低。所以就需要一 種檔案或指令碼,我們把想執行的操作以命令的方式寫入其中,然後讓docker讀取並分析、執行,那麼重複構建、更新將變得很方便,

Docker容器學習梳理--手動製作系統映象

docker官方和個人釋出的映象由於版本等各種原因,漏洞較多,已統計Docker Hub超過30%的官方映象包含高危漏洞。此外,由於網路等原因也會造成docker pull下載映象的速度很慢。基於這種情況,我們可以手動定製docker系統映象。 以下記錄了在centos7上

Docker容器學習梳理--私有倉庫Registry使用

但有時候使用Docker Hub這樣的公共倉庫可能不方便,這種情況下使用者可以使用registry建立一個本地倉庫供私人使用,這點跟Maven的管理類似。 使用私有倉庫有許多優點: 1 2 1)節省網路頻寬,針對於每個映象不用每個人

Docker容器學習梳理--基礎知識(2)

之前已經總結了Docker容器學習梳理--基礎知識(1),但是不夠詳細,下面再完整補充下Docker學習的一些基礎。 Docker是個什麼東西 Docker是一個程式執行、測試、交付的開放平臺,Docker被設計為能夠使你快速地交付應用。 在Docker中,你可以將你的程式分為不同的基礎部分,對於每一個基

Docker容器學習梳理--基礎知識(1)

Docker是PaaS 提供商 dotCloud 開源的一個基於 LXC 的高階容器引擎,原始碼託管在 Github 上, 基於go語言並遵從Apache2.0協議開源。Docker是通過核心虛擬化技術(namespace以及cgroups等)來提供容器的資源隔離與安全保障。由於Docker通過作業系統層

Docker容器學習梳理--基礎環境安裝

以下是centos系統安裝docker的操作記錄 1)第一種方法:採用系統自帶的docker安裝,但是這一般都不是最新版的docker安裝epel源[[email protected] ~]# wget http://dl.fedoraproject.org/pub/epel/epel-relea

Docker 使用 macvlan 實現跨主機網路通訊

一、背景        macvlan 本身是 linux kernel 模組,是一種網絡卡虛擬化技術;        它允許在同一個物理網絡卡上配置多個 MAC 地址,即多個 interface,每個 in