1. Docker概述
1.1. Docker簡介
Docker 是一個開源的應用容器引擎,基於 Go 語言開發。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
- Docker應用場景
- Web 應用的自動化打包和發佈
- 自動化測試和持續集成、發佈
- 在服務型環境中部署和調整數據庫或其他的後臺應用
使用Docker可以實現開發人員的開發環境、測試人員的測試環境、運維人員的生產環境的一致性。
Docker借鑑了標準集裝箱的概念。標準集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟件。
1.2. Docker容器與傳統虛擬機比較
- 傳統虛擬機
傳統虛擬機技術基於安裝在主操作系統上的虛擬機管理系統(如:VirtualBox和VMWare等),創建虛擬機(虛擬出各種硬件),在虛擬機上安裝從操作系統,在從操作系統中安裝部署各種應用。
- Docker
Docker容器是在操作系統層面上實現虛擬化,直接複用本地主機的操作系統,而傳統虛擬機則是在硬件層面實現虛擬化。與傳統的虛擬機相比,Docker優勢體現爲啓動速度快、佔用體積小。
1.3. Docker組成部分
名稱 | 說明 |
---|---|
Docker 鏡像(Images) | Docker 鏡像是用於創建 Docker 容器的模板。 鏡像是基於聯合文件系統的一種層式結構,由一系列指令一步一步構建出來。 |
Docker 容器(Container) | 容器是獨立運行的一個或一組應用。鏡像相當於類,容器相當於類的實例 |
Docker 客戶端(Client) | Docker 客戶端通過命令行或者其他工具使用 Docker API 與 Docker 的守護進程通信。 |
Docker 主機(Host) | 一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。 |
Docker守護進程 | 是Docker服務器端進程,負責支撐Docker 容器的運行以及鏡像的管理 |
Docker 倉庫DockerHub(Registry) | Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。 Docker Hub提供了龐大的鏡像集合供使用。用戶也可以將自己本地的鏡像推送到Docker倉庫供其他人下載。 |