docker 初始

一 docker概述

1.1 什麼是dokcer

Docker 是一個開源項目,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘項目。它基於 Google 公司推出的 Go 語言實現。 項目後來加入了 Linux 基金會,聽從了 Apache 2.0 協議,項目代碼在 GitHub 上 進行維護。Docker 自開源後受到普遍的關注和討論,以致於 dotCloud 公司後來都更名爲 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中普遍應用。Docker 項目的目標是實現 輕量級的操做系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不須要去關心容器的管理,使得操做更爲簡便。用戶操做 Docker 的容器就像操 做一個快速輕量級的虛擬機同樣簡單。Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植 的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不 會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。git

二 爲何要用docker

2.1 Docker 容器虛擬化的好處

在雲時代,開發者建立的應用必需要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的限制; 同時必須知足「任什麼時候間任何地點」可獲取可以使用的特色。所以,開發者們須要一種新型的建立分佈式應用程序 的方式,快速分發部署,而這正是 Docker 所可以提供的最大優點。Docker 提供了一種更爲聰明的方式,經過 容器來打包應用、解耦應用和運行平臺。這意味着遷移的時候,只須要在新的服務器上啓動須要的容器就能夠了, 不管新舊服務器是不是同一類別的平臺。這無疑幫助咱們節約了大量的寶貴時間,並下降部署過程出現問題的風 險。docker

2.2 Docker 在開發和運維中的優點

對於開發和運維人員來講,最求之不得的效果可能就是一次建立和配置,以後能夠在任意地方、任意時間讓 應用正常運行,而 Docker 偏偏能夠實現這一中級目標。具體來講,在開發和運維過程當中,Docker 具備如下幾 個方面的優點:
·······更快的交付和部署:使用 Docker,開發人員可使用鏡像來快速構建一套標準的開發環境;開發完之 後,測試和運維人員能夠直接使用徹底相同的環境來部署代碼。只要是開發測試過的代碼,就能夠確保 在生產環境無縫運行。Docker 能夠快速建立和刪除容器,實現快速迭代,節約開發、測試及部署的時間
·······更高效的利用資源:運行 Docker 容器不須要額外的虛擬化管理程序的支持,Docker 是內核級的虛擬化,能夠實現更高的性能,同時對資源的額外需求很低,與傳統的虛擬機方式相比,Docker 的性能要 提升 1 ~ 2 個數量級。
·······更輕鬆的遷移和擴展:Docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私 有云、我的電腦等等,同時支持主流的操做系統發行版本。這種兼容性能讓用戶能夠在不一樣的平臺之間 輕鬆的遷移應用。
·······更輕鬆的管理和更新:使用 Dockerfile,只須要小小的配置修改,就能夠替代以往大量的更新工做。所 有的修改都以增量的方式被分發和更新,從而實現自動化而且高效的容器管理。ubuntu

2.3 docker與虛擬機的比較

做爲一種輕量級的虛擬化方式,Docker 在運行應用上跟傳統的虛擬機的方式相比具備以下顯著優點:安全

1.Docker 容器啓動很快,啓動和中止能夠實現秒級,相比傳統的虛擬機方式(分鐘級)要快速不少。 
2.Docker 容器對系統資源需求不多,一臺主機上能夠同時運行數千個 Docker 容器。 
3.Docker 經過相似 git 設計理念的操做來方便用戶獲取、分發和更新應用鏡像,存儲複用,增量更新。 
3.Docker 經過 Dockerfile 支持靈活的自動化建立和部署機制,能夠提升工做效率,並標準化流程。
特性 容器 虛擬機
啓動速度 秒級 分鐘級
性能 接近原生 較好
內存 MB級 GB級
硬盤適應 MB級 GB級
運行密度 單臺主機支持上千個 單臺主機支持幾個
隔離性 安全隔離 徹底隔離
遷移 優秀 通常

三 docker與虛擬化

Docker 以及其餘容器技術,都屬於操做系統虛擬化範疇,操做系統細膩化最大的特色就是不須要額外的 supervisor 支持。Docker 虛擬化方式之因此有衆多優點,跟操做系統虛擬化技術自身的設計和實現分不開
bash

四 docker概念和使用

Docker 中有三個核心概念:鏡像、容器和倉庫。所以,準確把握這三大概念對於掌握 Docker 技術尤其重 要。服務器

  1. 鏡像(Image) Docker 鏡像(Image),就至關因而一個 root 文件系統。好比官方鏡像 ubuntu:16.04 就包含了完 整的一套 Ubuntu16.04 最小系統的 root 文件系統。
  2. 容器(Container) 鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和實例同樣,鏡像是靜 態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。
  3. 倉庫(Repository) 用來保存鏡像的倉庫。當咱們構建好本身的鏡像以後,須要存放在倉庫中,當咱們須要啓動一個鏡像時, 可 以在倉庫中下載下來。

相關文章
相關標籤/搜索