Docker 的核心組件包括:docker
Docker 客戶端 - Client安全
Docker 服務器 - Docker daemon服務器
Docker 鏡像 - Image架構
Registrysocket
Docker 容器 - Containertcp
Docker 架構以下圖所示:工具
Docker 採用的是 Client/Server 架構。客戶端向服務器發送請求,服務器負責構建、運行和分發容器。客戶端和服務器能夠運行在同一個 Host 上,客戶端也能夠經過 socket 或 REST API 與遠程的服務器通訊。學習
Docker 客戶端ui
最經常使用的 Docker 客戶端是 docker
命令。經過 docker
咱們能夠方便地在 Host 上構建和運行容器。操作系統
docker
支持不少操做(子命令),後面會逐步用到。
除了 docker
命令行工具,用戶也能夠經過 REST API 與服務器通訊。
Docker 服務器
Docker daemon 是服務器組件,以 Linux 後臺服務的方式運行。
Docker daemon 運行在 Docker host 上,負責建立、運行、監控容器,構建、存儲鏡像。
默認配置下,Docker daemon 只能響應來自本地 Host 的客戶端請求。若是要容許遠程客戶端請求,須要在配置文件中打開 TCP 監聽,步驟以下:
編輯配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在環境變量 ExecStart
後面添加 -H tcp://0.0.0.0
,容許來自任意 IP 的客戶端鏈接。
若是使用的是其餘操做系統,配置文件的位置可能會不同。
重啓 Docker daemon。
服務器 IP 爲 192.168.56.102,客戶端在命令行里加上 -H 參數,便可與遠程服務器通訊。
info
子命令用於查看 Docker 服務器的信息。
Docker 鏡像
可將 Docker 鏡像看着只讀模板,經過它能夠建立 Docker 容器。
例如某個鏡像可能包含一個 Ubuntu 操做系統、一個 Apache HTTP Server 以及用戶開發的 Web 應用。
鏡像有多種生成方法:
能夠從無到有開始建立鏡像
也能夠下載並使用別人建立好的現成的鏡像
還能夠在現有鏡像上建立新的鏡像
咱們能夠將鏡像的內容和建立步驟描述在一個文本文件中,這個文件被稱做 Dockerfile,經過執行 docker build <docker-file>
命令能夠構建出 Docker 鏡像,後面咱們會討論。
Docker 容器
Docker 容器就是 Docker 鏡像的運行實例。
用戶能夠經過 CLI(docker)或是 API 啓動、中止、移動或刪除容器。能夠這麼認爲,對於應用軟件,鏡像是軟件生命週期的構建和打包階段,而容器則是啓動和運行階段。
Registry
Registry 是存放 Docker 鏡像的倉庫,Registry 分私有和公有兩種。
Docker Hub(https://hub.docker.com/) 是默認的 Registry,由 Docker 公司維護,上面有數以萬計的鏡像,用戶能夠自由下載和使用。
出於對速度或安全的考慮,用戶也能夠建立本身的私有 Registry。後面咱們會學習如何搭建私有 Registry。
docker pull
命令能夠從 Registry 下載鏡像。
docker run
命令則是先下載鏡像(若是本地沒有),而後再啓動容器。
下一節咱們經過一個例子來看各個組件是如何協調工做的。