Docker基礎:Docker是什么,為什么這么火?
?一、Docker是什么?
Docker是一個開源的應用容器引擎,它基于go語言開發,并遵從Apache2.0開源協議。使用Docker可以讓開發者封裝他們的應用以及依賴包到一個可移植的容器中,然后發布到任意的 Linux 機器上運行。Docker 的核心思想打包裝箱,每個箱子是互相隔離的,互不影響。
二、Docker 歷史
2010 年,幾個搞 IT 的年輕人,在美國舊金山成立了一家名叫 dotCloud 的公司。dotCloud 的平臺即服務(Platform-as-a-Service, PaaS)提供商。dotCloud 平臺底層利用了 Linux 的 LXC 容器技術。
什么是LXC?LXC 是 Docker 的底層基石,但是在 Docker 0.9 版本的時候,Docker引入了基于 Go 語言構建的 Libcontainer 的 execution driver。有了 Libcontainer 這個項目,Docker 不再需要依賴于 Linux 部件(LXC,libvirt,systemd-nspawn...)就可以處理 namespaces、control groups、capabilities、apparmor profiles、network interfaces。LXC 逐漸淪為可選項。
后來為了方便創建和管理這些容器,dotCloud 基于 Google 公司推出的 Go 語言開發了一套內部工具,之后被命名為 Docker。Docker 就是這樣誕生的。Docker 1.8 版本 中 LXC 被 棄用,在Docker 1.10版本LXC 徹底離開Docker。Docker 官方推出的Libcontainer 集成了 Linux 內核中的很多特性,成為一個獨立、穩定且不受制于 Linux 的 Library。
2013 年 3 月,dotCloud 公司的創始人之一28 歲的 Solomon?Hykes 正式決定,將 Docker 項目開源。開源當月發布了 Docker 0.1 版本。此后的每一個月, Docker 都會發布一個迭代版本。到 2014 年 6 月 9 日, Docker 1.0 版本正式發布了。
這個時候的 Docker已經成為行業里人氣最火的開源技術、。Google、微軟、Amazon、 VMware 這樣的互聯網巨頭們都對它青睞有加,表示將全力支持。Docker 火了之后, dotCloud 公司干脆把公司名字也改成了 Docker Inc. 。
三、為什么選擇 Docker
3.1 更高效的利用系統資源
由于容器不需要進行硬件虛擬以及運行完整操作系統等額外的開銷,Docker 對系統資源的利用率比虛擬機更高。無論是應用執行速度、內存損耗或者文件存儲,都要比傳統虛擬機技術更高效。
3.2 更快速的啟動時間
傳統的虛擬機技術啟動應用服務往往需要好幾分鐘, Docker 容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統,可以達到秒級、甚至毫秒級的啟動時間。大大的節約了項目部署的時間。
3.3 保證一致的項目運行環境
開發過程中一個非常常見的問題是本地環境、測試環境、生產環境不一致。經常能碰到開發、測試環境運行正常而到了生產環境出現莫名其秒的問題。而 Docker 的鏡像提供了除內核外完整的項目運行環境,確保了應用運行環境一致性,從而避免了因為開發環境不一致造成的部署問題。
3.4 持續交付和部署
對開發和運維(DevOps)人員來說,最理想的就是一次創建或配置,可以在任意服務器上正常運行。使用 Docker 可以通過定制應用鏡像來實現持續集成、持續交付、部署。開發人員可以通過 Dockerfile 來進行鏡像構建,并結合持續集成(Continuous Integration)系統進行集成測試,而運維人員則可以直接在生產環境中快速部署該鏡像,甚至結合持續部署(Continuous Delivery/Deployment)系統進行自動化部署。而且使用 Dockerfile 使鏡像構建透明化,不僅僅開發團隊可以理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的在生產環境中部署該鏡像。
3.5 更輕松的服務遷移
由于 Docker 確保了運行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結果是一致的。因此用戶可以很輕易地將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況。
3.6 更輕松的維護和擴展
Docker 使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得非常簡單。此外,Docker 團隊同各個開源項目團隊一起維護了一大批高質量的 官方鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定制,大大降低了應用服務的鏡像制作成本。
四、容器與虛擬機的比較
Docker 和傳統虛擬化方式的不同,容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。
與傳統的虛擬機相比,Docker 優勢體現為啟動速度快、占用體積小。
特性? | Docker? | 虛擬機? |
啟動? | 秒級? | 分鐘級? |
硬盤使用? | MB? | GB? |
性能? | 接近原生? | 較差? |
系統支持量? | 單機支持上千個容器? | 一般幾十個? |
個人博客網站:https://programmerblog.xyz。