Docker 簡介(一)
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
Docker的應用場景
-
Web 應用的自動化打包和釋出。
-
自動化測試和持續整合、釋出。
-
在服務型環境中部署和調整資料庫或其他的後臺應用。
- 從頭編譯或者擴充套件現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
Docker 的優點
-
1、簡化程式:
Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數週的 任務,在Docker容器的處理下,只需要數秒就能完成。 -
2、避免選擇恐懼症:
如果你有選擇恐懼症,還是資深患者。Docker 幫你 打包你的糾結!比如 Docker 映象;Docker 映象中包含了執行環境和配置,所以 Docker 可以簡化部署多種應用例項工作。比如 Web 應用、後臺應用、資料庫應用、大資料應用比如 Hadoop 叢集、訊息佇列等等都可以打包成一個映象部署。 -
3、節省開支:
一方面,雲端計算時代到來,使開發者不必為了追求效果而配置高額的硬體,Docker 改變了高效能必然高價格的思維定勢。Docker 與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬體管理的問題,也改變了虛擬化的方式。
Docker 架構
Docker 使用客戶端-伺服器 (C/S) 架構模式,使用遠端API來管理和建立Docker容器。
Docker 容器通過 Docker 映象來建立。
容器與映象的關係類似於面向物件程式設計中的物件與類。
Docker | 面向物件 |
---|---|
容器 | 物件 |
映象 | 類 |
Docker 映象(Images) |
Docker 映象是用於建立 Docker 容器的模板。 |
Docker 容器(Container) |
容器是獨立執行的一個或一組應用。 |
Docker 客戶端(Client) |
Docker 客戶端通過命令列或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護程序通訊。 |
Docker 主機(Host) |
一個物理或者虛擬的機器用於執行 Docker 守護程序和容器。 |
Docker 倉庫(Registry) |
Docker 倉庫用來儲存映象,可以理解為程式碼控制中的程式碼倉庫。 Docker Hub(https://hub.docker.com) 提供了龐大的映象集合供使用。
|
Docker Machine |
Docker Machine是一個簡化Docker安裝的命令列工具,通過一個簡單的命令列即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |