一. Docker介紹
- Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國期間發(fā)起的一個公司內(nèi)部項目惠赫,于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開源阔墩,主要項目代碼在 GitHub 上進行維護井厌。
- Docker 使用 Google 公司推出的 Go 語言 進行開發(fā)實現(xiàn)抑淫。
- docker是linux容器的一種封裝胶逢,提供簡單易用的容器使用接口同云。它是最流行的Linux容器解決方案咱扣。
- docker的接口相當簡單驶社,用戶可以方便的創(chuàng)建、銷毀容器测萎。
- docker將應(yīng)用程序與程序的依賴亡电,打包在一個文件里面。運行這個文件就會生成一個虛擬容器硅瞧。
二. 應(yīng)用場景
- web應(yīng)用的自動化打包和發(fā)布
- 自動化測試和持續(xù)集成份乒、發(fā)布
- 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他應(yīng)用
三. 相關(guān)概念
- 鏡像 image
- 容器 container
- 倉庫 repository
四、Docker優(yōu)點
- 更高效的利用系統(tǒng)資源
- 由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷腕唧,Docker 對系統(tǒng) 資源的利用率更高或辖。
- 無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件存儲速度枣接,都要比傳 統(tǒng)虛擬機技術(shù)更高效颂暇。因此,相比虛擬機技術(shù)但惶,一個相同配置的主機画侣,往往可以運 行更多數(shù)量的應(yīng)用絮缅。
- 更快速的啟動時間
- 傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘店溢,而 Docker 容器應(yīng)用墙基,由于直接 運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng)添谊,因此可以做到秒級财喳、甚至毫秒級的啟 動時間。大大的節(jié)約了開發(fā)斩狱、測試耳高、部署的時間。
- 一致的運行環(huán)境
- 開發(fā)過程中一個常見的問題是環(huán)境一致性問題喊废。由于開發(fā)環(huán)境、測試環(huán)境栗弟、生產(chǎn)環(huán) 境不一致污筷,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)。而 Docker 的鏡像提供了除內(nèi) 核外完整的運行時環(huán)境乍赫,確保了應(yīng)用運行環(huán)境一致性瓣蛀,從而不會再出現(xiàn) “這段代碼 在我機器上沒問題啊” 這類問題。
- 持續(xù)交付和部署
- 對開發(fā)和運維(DevOps)人員來說雷厂,最希望的就是一次創(chuàng)建或配置惋增,可以在任意 地方正常運行。
- 使用 Docker 可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成改鲫、持續(xù)交付诈皿、部署林束。開發(fā)人員 可以通過 Dockerfile 來進行鏡像構(gòu)建,并結(jié)合持續(xù)集成(Continuous Integration) 系 統(tǒng)進行集成測試稽亏,而運維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像壶冒,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進行自動部署。
- 而且使用 Dockerfile 使鏡像構(gòu)建透明化截歉,不僅僅開發(fā)團隊可以理解應(yīng)用運行環(huán) 境胖腾,也方便運維團隊理解應(yīng)用運行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像瘪松。
- 更輕松的遷移
- 由于 Docker 確保了執(zhí)行環(huán)境的一致性咸作,使得應(yīng)用的遷移更加容易。Docker 可以在 很多平臺上運行宵睦,無論是物理機记罚、虛擬機、公有云状飞、私有云毫胜,甚至是筆記本,其運 行結(jié)果是一致的诬辈。因此用戶可以很輕易的將在一個平臺上運行的應(yīng)用酵使,遷移到另一 個平臺上,而不用擔心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況焙糟。