Docker 俯瞰深溪

  • 2019 年 12 月 4 日
  • 筆記

這篇來說下,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 的容器提供網絡服務。

容器互聯

容器與外部網絡鏈接