3-docker 架構和底層技術簡介
Docker Platform
Docker 是一個平臺。
- 提供了一個開發、打包、運行
app
的平臺 - 把
app
和底層infrastructure
隔離開來
根據上圖我們可以看出 Docker Engine 把上層的 app 應用程序和底層的物理設備或虛擬設備進行了隔離,然后我們在 docker 之上做操作。
Docker Engine
Docker 是一個 CS 架構
- 后臺進程(dockerd)
用于維護我們常見的操作,比如說image
container
net
管理。 - REST API Server
連接client
和server
- CLI接口(docker)
操作者使用的client端
總體架構
-
Client
這部分就是我們通常在命令行內所打的命令,如:
docker pull gitlab
-
DOCKER_HOST
是一臺啟動了 Docker daemon (dockerd)的機器,當然這個dockerd
可以在本地也可以在遠端,也就是說可以遠程控制一臺裝有dockerd
的設備。一般來說 client和dockerd是在同一個機器上的。
那么 DOCKER_HOST 上主要有兩個比較重要的概念:
- Containers - 容器/集裝箱
- Images - 鏡像
Docker 底層技術
我們知道docker 使用的技術并不是比較新的技術,而是很早就已經存在的技術。
- Namespace: 做隔離pid,net,ipc,mnt,uts
- Control groups : 做資源限制
- Union files systems : Container 和 image 的分層
這些都是 linux 自帶的技術。