# 1. Docker 介紹
## 什么就 Docker?
Docker 是一個開源項目, 誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在[GitHub](https://github.com/docker) 上進行維護。
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。Docker 的基礎是 Linux 容器(LXC)等技術。在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。
## 為什么要使用 Docker?
Docker 相比傳統虛擬機有諸多優勢。
* 啟動速度更快: 秒級啟動。
* 快速的部署和交付: 開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后, 運維人員可以直接使用這個容器來部署代碼。
* 更高效的虛擬化: 它是內核級的虛擬化,因此可以實現更高的性能和效率。
* 高效的遷移: Docker 可以運行在不同的平臺,用戶可以輕松的將一個應用從一個平臺遷移到另一個平臺。
* 節省開支: Docker 容器除了運行其中應用外,基本不消耗額外的系統資源,一臺設備可以運行上千個容器。
## Docker 引擎
docker 引擎是一個 c/s 結構的應用,主要組件見下圖:

* Server 是一個常駐進程
* REST API 實現了 client 和 server 間的交互協議
* CLI 實現容器和鏡像的管理,為用戶提供統一的操作界面
### Docker 構架
Docker 使用 C/S 架構,Client 通過接口與 Server 進程通信實現容器的構建,運行和發布。client 和 server 可以運行在同一臺集群,也可以通過跨主機實現遠程通信。

## Docker 基本概念
Docker 包括三個基本概念
* 鏡像(Image)
Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那里下載一個已經做好的鏡像來直接使用。鏡像可以用來創建 Docker 容器。
* 容器(Container)
容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、 刪除。每個容器都是相互隔離的、保證安全的平臺。
* 倉庫(Repository)
倉庫是集中存放鏡像文件的場所。倉庫分為公開倉庫(Public)和私有倉庫(Private) 兩種形式。
最大的公開倉庫是 [Docker Hub](https://hub.docker.com/),存放了數量龐大的鏡像供用戶下載。 [中國官方鏡像加速](https://www.docker-cn.com/registry-mirror)