什麼是 Docker網路
- docker 不啟動,預設網路情況
- ens33
- lo
- virbr0
- 在 CentOS7 的安裝過程中如果有選擇相關虛擬化的的服務安裝系統後,啟動網路卡時會發現有一個以網橋連線的私網地址的 virbr0 網路卡(virbr0 網路卡:它還有一個固定的預設 IP 地址 192.168.122.1),是做虛擬機器網橋的使用的,其作用是為連線其上的虛機網路卡提供 NAT 訪問外網的功能。
- 之前 Linux 安裝,勾選安裝系統的時候附帶了 libvirt 服務才會生成的一個東西,如果不需要可以直接將 libvirtd 服務解除安裝,yum remove libvirt-libs.x86_64
- docker 啟動後 會產生一個名為 docker0 的虛擬網橋
- 檢視docker網路模式命令:docker network ls
常用基本命令
- docker network ls:檢視網路
- docker network inspect XXX 網路名字:檢視網路源資料
- docker network rm XXX 網路名字:刪除網路
網路模式
- bridge 模式:使用--network bridge 指定,預設使用 docker0
- Docker 服務預設會建立一個 docker0 網橋(其上有一個 docker0 內部介面),該橋接網路的名稱為docker0,它在核心層連通了其他的物理或虛擬網路卡,這就將所有容器和本地主機都放到同一個物理網路。Docker 預設指定了 docker0 介面 的 IP 地址和子網掩碼,讓主機和容器之間可以通過網橋相互通訊。
- host 模式:使用--network host 指定
- 直接使用宿主機的 IP 地址與外界進行通訊,不再需要額外進行NAT 轉換。
- none 模式:使用--network none 指定
- 在none模式下,並不為Docker容器進行任何網路配置。 也就是說,這個Docker容器沒有網路卡、IP、路由等資訊,只有一個lo需要我們自己為Docker容器新增網路卡、配置IP等。
- container 模式:使用--network container:NAME 或者容器 ID 指定
- 新建的容器和已經存在的一個容器共享一個網路ip配置而不是和宿主機共享。新建立的容器不會建立自己的網路卡,配置自己的IP,而是和一個指定的容器共享IP、埠範圍等。同樣,兩個容器除了網路方面,其他的如檔案系統、程式列表等還是隔離的
Docker平臺架構圖解
整體說明
- 從其架構和執行流程來看,Docker 是一個 C/S 模式的架構,後端是一個鬆耦合架構,眾多模組各司其職。
- Docker 執行的基本流程為:
- 1 使用者是使用 Docker Client 與 Docker Daemon 建立通訊,併傳送請求給後者。
- 2 Docker Daemon 作為 Docker 架構中的主體部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的請求。
- 3 Docker Engine 執行 Docker 內部的一系列工作,每一項工作都是以一個 Job 的形式的存在。
- 4 Job 的執行過程中,當需要容器映象時,則從 Docker Registry 中下載映象,並通過映象管理驅動 Graph driver將下載映象以Graph的形式儲存。
- 5 當需要為 Docker 建立網路環境時,通過網路管理驅動 Network driver 建立並配置 Docker 容器網路環境。
- 6 當需要限制 Docker 容器執行資源或執行使用者指令等操作時,則通過 Execdriver 來完成。
- 7 Libcontainer是一項獨立的容器管理包,Network driver以及Exec driver都是通過Libcontainer來實現具體對容器進行的操作。
整體架構