1. 程式人生 > >基於Spring Boot和Spring Cloud實現微服務架構學習(五)-Docker總結

基於Spring Boot和Spring Cloud實現微服務架構學習(五)-Docker總結

介紹

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。

Docker在部署軟體方面解決了最困難的問題,將應用程式程式碼開發和部署環境。在不同平臺之間移植程式碼變得很簡單,因為我們的應用程式程式碼是被包裝在Docker環境中。

Docker和虛擬機器VM的區別

虛擬機器(vm)是一個了不起的工具,它有助於進一步抽象執行時環境的物理硬體。 但不幸的是在啟動和執行,有一個非常陡峭的效能損失。vm的大部分問題的原因是因為重複,想想Linux作業系統的結構,有一個清晰的分離, Linux核心負責管理深層網路和執行緒等任務和核心之外的一切的使用者空間。


virtualbox 和 VMware 等傳統虛擬機器執行在使用者空間, 傳統的VM啟動一個例項時,它攜帶了一個Linux核心和在現有的使用者空間內的一個使用者空間。


這就是重複發生的地方,為什麼要在使用者空間再啟動一個Linux核心呢?而不是使用已經有的核心?下面是Docker的示意圖:


Docker啟動一個例項時,它會將使用者空間和所在主機的Linux核心連線,因此啟動只需要毫秒,效能是97%。具體瞭解Docker推薦一篇文章《Docker:VM、程式碼遷移和SOA解決方案》,可在我資源裡下載。

Docker關鍵詞

  • 映象是 Docker 應用的靜態表示,是應用的交付件,映象中包含了應用執行所需的所有依賴:包括應用程式碼、應用依賴庫、應用執行時和作業系統。
  • Dockerfile 是一個描述檔案,描述了產生 Docker 映象的過程。
  • 容器是映象執行時的動態表示,如果把映象想象為一個 Class 那麼容器就是這個 Class 的 instance 例項。

一個應用 Docker 化的第一步就是通過 Dockerfile 產生應用映象。

安裝

我電腦是Mac,使用官網推薦Docker Toolbox自動安裝Docker所需要的周邊軟體,包括:

  • VirtualBox
  • Docker客戶端
  • Docker Compose通過DockerFil檔案一鍵部署
  • Kitematic 一個Docker和Docker Hub的GUI客戶端
  • Docker Machine 用於幫助使用者建立的Docker主機,預設是default

考慮官網下載太慢了,建議去DaoCloud上下載並按照教程安裝(http://docs.daocloud.io/faq/install-docker-daocloud),同時,操作上有時可能是網速問題,得不到及時響應,所以可以多試幾次。

MacX應用Docker擴充套件

MacX通過docker-machine在一個Linux虛擬機器中執行Docker Daemon。docker-machine是用來建立和管理Linux虛擬機器(Docker Daemon執行的基礎)的工具,MacX使用Oracle VM VirtualBox來虛擬Linux,這裡需要注意Oracle VM VirtualBox的版本最好為4.3版本,我在部署過程中使用最新的Oracle VM VirtualBox5.0,發現跟著官方文件往下無法啟動default虛擬機器,具體原因Google一堆,目前沒有查清楚。(引自作者zhoujingk_49)


總結

Docker非常適合SOA的微服務架構,每一個單獨的Dockerfile代表一個微服務,這些微服務是不同與在SOA範圍內的傳統服務。 傳統的服務通常是整體性的,很難被分割和碎片化, Micro-services專注於非常小的、可重用的元件,儘可能少知道他們所處的環境。 Docker提供工作的隔離,可以部署在任何地方執行小micro-services。