Docker原理
Docker是啥
Docker是一個程序運行、測試、交付的開放平臺,Docker被設計爲可以使你快速地交付應用。在Docker中,你能夠將
你的程序分爲不一樣的 基礎部分,對於每個基礎部分均可以當作一個應用程序來管理。Docker可以幫助你快速地測試、
快速地編碼、快速地交付,而且縮短你從編碼到運行應用的 週期。
Docker使用輕量級的容器虛擬化平臺,而且結合工做流和工具,來幫助你管理、部署你的應用程序。
在其核心,Docker實現了讓幾乎任何程序均可以在一個安全、隔離的容器中運行。安全和隔離可使你能夠同時在機器
上運行多個容器。
容器輕量級的特性,意味着你能夠獲得更多的硬件性能。
圍繞着容器的虛擬化工具和平臺,能夠在如下幾個方面爲你提供幫助:
幫助你把應用程序(包括其他的支持組件)放入到Docker容器中。
分發和轉移你的容器至你的團隊其它成員來進行進一步的開發和測試。
部署這些應用程序至你的生產環境,不管是本地的數據中心仍是雲平臺。
我能夠用Docker作啥
快速交付你的應用程序
開發和拓展更加簡單
達到高密度和更多負載
Docker的主要組成有哪些
Docker有兩個主要的部件:
Docker: 開源的容器虛擬化平臺。
Docker Hub: 用於分享、管理Docker容器的Docker SaaS平臺。
Docker鏡像是如何工做的
咱們已經看到了,Docker鏡像是Docker容器運行時的只讀模板。每個鏡像由一系列的層(layers)組成。Docker使
用UnionFS來將這些層聯合到一二鏡像中。Union文件系統容許獨立文件系統中的文件和文件夾(稱之爲分支)被透明覆
蓋,造成一個單獨連貫的文件系統。
正由於有了這些層的存在,Docker是如此的輕量。當你改變了一個Docker鏡像,好比升級到某個程序到新的版本,一個
新的層會被建立。所以, 不用替換整個原先的鏡像或者從新創建(在使用虛擬機的時候你可能會這麼作),只是一個新的
層被添加或升級了。如今你不用從新發布整個鏡像,只須要升級。層 使得奮發Docker鏡像變得簡單和快速。
每一個鏡像都是從一個基礎的鏡像開始的,好比ubuntu,一個基礎的Ubuntu鏡像,或者是fedora,一個基礎的Fedora鏡像。
你可使用你本身的鏡像做爲新鏡像的基礎,例如你有一個基礎的安裝了Apache的鏡像,你可使用該鏡像來創建你的
Web應用程序鏡像。
Docker鏡像從這些基礎的鏡像建立,經過一種簡單、具備描述性的步驟,咱們稱之爲 指令(instructions)。 每個指令
會在鏡像中建立一個新的層,指令能夠包含這些動做:
運行一個命令。
增長文件或者文件夾。
建立一個環境變量。
當運行容器的時候哪些程序會運行。
這些指令存儲在Dockerfile文件中。當你須要創建鏡像的時候,Docker能夠從Dockerfile中讀取這些指令而且運行,而後返回
一個最終的鏡像。
Docker倉庫是如何工做的
Docker倉庫是Docker鏡像的存儲倉庫。你能夠推送你的鏡像到你的Docker倉庫中。
經過Docker客戶端,你能夠從Docker倉庫中搜索鏡像。
Docker容器是如何工做的
一個Docker容器包含了一個操做系統、用戶添加的文件和元數據(meta-data)。咱們能夠看到,每一個容器都是從鏡像建
立的。鏡像告訴 Docker容器內包含了什麼,當容器啓動時運行什麼程序,還有許多配置數據。Docker鏡像是隻讀的。
當Docker運行一個從鏡像創建的容器,它會 在鏡像頂部添加一個可讀寫的層,應用程序能夠在這裏運行。ubuntu