咱們爲何要關心Docker?前端
好。第一個問題:什麼是Docker?web
若是你是一名開發人員,你可能遇到過如下問題:軟件能夠在機器上運行,可是在測試環境中卻沒法工做。那麼,Docker在最基本的層面上解決了這個問題。數據庫
軟件不單單是一段代碼。它由前端組件、後端服務器、數據庫、信封、庫和依賴項組成,咱們必須確保全部組件都能正常工做,而且軟件也能在全部平臺上運行,這包括:手機、平板電腦、電腦,以及全部不一樣的操做系統。若是咱們畫一張全部組件和平臺的圖,咱們會看到每一個組件都鏈接到各個平臺——看起來就像一個神經網絡同樣!後端
能夠用一個簡單的比喻來理解這一點:想象你要搬家了,你必須帶着全部的東西去一個不一樣的國家。你移動的東西有不一樣的大小和形狀,有不一樣的要求(易碎品,「輕拿輕放」,等等)。你必須考慮運輸、包裝、專業勞動力、運輸。可是若是你有一個容器,那麼全部這些問題都會消失,你所要作的就是把你的東西完整地、正確地打包在容器裏。服務器
Docker是一個經過使用容器來進行輕鬆部署和運行應用程序的工具。Docker容許開發人員將應用程序與所需的全部部分(如庫和依賴項)打包在一塊兒,並將它們做爲一個包發送出去。Docker經過將其發送到目的地並在全部可能的平臺上運行它來處理其他的工做。網絡
開發人員須要考慮的是如何開發軟件,他們只須要將其打包,而不須要考慮運行平臺的需求。架構
Docker文件用於構建一個Docker映像,該映像還將包含全部項目代碼。同一個Docker映像能夠用來旋轉多個容器,每一個容器都對底層映像進行了修改。最後的映像能夠被上傳到Docker的中心,並與其餘協做者共享以進行測試和部署。所以,構建Docker映像將是你最主要的挑戰。Docker容器只是Docker映像的一個實例。工具
Docker文件:一個文本文檔,包含了用戶能夠在命令行上調用的用來組裝圖像的全部命令。測試
Docker鏡像:一種只讀模板,用於建立Docker用戶構建的容器;它將存儲在Docker中心或本地註冊表中。操作系統
Docker容器:獨立的應用程序平臺,包含了運行由一個或多個映像構建的應用程序所需的一切。
一般,咱們使用一個容器來承載一個服務器。考慮一個使用許多web服務器的大型產品,這些服務器必須單獨或在單獨的虛擬機(vm)中運行。
在這種狀況下,運行這麼多不一樣的vm會使計算機過熱並下降全部進程的速度。可是,咱們有一個單獨的容器,叫作Docker Compose,它將包含一個Docker Composer。若是咱們在編寫器中有兩個Docker映像,它將在兩個實例中運行,容許它們彼此交互並監視它們。
假設你正在使用MongoDB、Express、Angular和Node.js開發一個全堆棧應用程序。您必須使用三個包含三個容器的Docker文件。一個容器用於MongoDB做爲數據庫;一個容器用於服務器,它是Express和Node.js的組合;另外一個容器用於Angular(前端客戶端)。
若是你不知道完整堆棧應用程序是如何工做的,那麼你首先須要瞭解用戶所在的客戶端。用戶嚮應用程序發送請求,而後應用程序將請求發送到服務器。服務器(即後端)執行全部的功能。而後,服務器從數據庫(本例中爲MongoDB)獲取數據,並將其發送到用戶的前端。容器中的全部Docker文件都由用YAML編寫的Docker撰寫文件控制。在YAML文件中,你必須指定容器的位置,以及Composer與其餘容器交互時所必須使用的端口號。
簡單來講,Docker組合用於運行多容器應用程序。每一個容器將運行一個獨立的應用程序,它能夠與同一主機中的每一個容器通訊。
Docker使用客戶機-服務器架構。請參見下面的圖片進行說明。
以上信息來源於網絡,由「京東雲開發者社區」公衆號編輯整理,不表明京東雲立場。
點擊「京東雲」瞭解京東雲原生容器產品