Docker 俯瞰深溪
- 2019 年 12 月 4 日
- 筆記
- Docker 初次見面 –
Docker
基礎概念 - Docker 循序漸進 –
Docker
容器的基本操作 - Docker 漸入佳境 –
Docker
容器示例(Nginx) - Docker 搭建 .Net Core環境 – 部署
.net Core
的Docker
環境 - Docker 曲徑通幽 –
Docker
鏡像管理相關
這篇來說下,
Docker
基本架構和一些偏底層的東西。
C/S模式
先從 Docker 的 C/S 模式說起。
Docker 採用了 C/S架構,包括客戶端和服務端。
Docker daemon 作為服務端接受來自客戶的請求,並處理這些請求(創建、運行、分發容器)。
客戶端和服務端既可以運行在一個機器上,也可通過 socket 或者 Remote API (RESTful API) 來進行通信。
關於什麼是 RESTful 可以參考阮一峰老師的 理解RESTful架構。

簡單來說,就是把 Docker 運行在宿主機上的守護進程當作 C/S 中的 Server ,而用戶實際使用的是 Docker CLI客戶端 也就是 Client , Clinet 和 Server 中通過命令並返回執行結果來交互。
前面提到了 socket 和 RemoteAPI ,其中 RemoteAPI 提供交互,那麼 Socket 呢,則是提供鏈接。
Docker 支持三種鏈接方式:
- unix:///var/run/docker.sock
- tcp://host:port
- fd://socketfd
通過這些鏈接方式,就可以實現對客戶端/服務端的訪問。
Docker 容器網絡
通過 ifconfig 指令,能夠發現在網絡設備中存在一個 docker0 ,它的本質是一個 Linux 的虛擬網橋-這裡了解更多,為 Docker 的容器提供網絡服務。