什么是Docker?
doker什么是doker?doker 環境普通環境定義軟件依賴的環境大致包括:思想:三大核心:為什么要使用doker?Docker 比傳統虛擬機幾大優點。 更高效的利用系統資源更快速的的啟動時間一致的運行環境持續交付和部署更輕松的遷移更輕松的維護和擴展更快速的交付和部署更高速的虛擬化更簡單的管理對比傳統虛擬機總結
doker
什么是doker?
Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在GitHub 上進行維護。
?
Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。Docker 的基礎是 Linux 容器(LXC)等技術
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。
?
doker 環境
普通環境
定義
軟件依賴的環境大致包括:
-
配置文件
-
代碼
-
tomcat
-
JDK
-
操作系統
Docker作為一個軟件集裝箱化平臺,可以讓開發者構建應用程序時,將它與其依賴環境一起打包到一個容器中,然后很容易地發布和應用到任意平臺中。
思想:
-
集裝箱
-
標準化
-
隔離
三大核心:
-
鏡像 - 復制的程序
-
定義:
-
Docker 鏡像可以看作是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。
-
-
作用
-
類似于虛擬機的快照,用來創建新的容器
-
-
特點
-
鏡像不包含任何動態數據,其內容在構建之后也不會被改變
-
-
-
容器 - 集裝箱
-
運行程序的地方
-
鏡像是靜態的,每一層都只是可讀的,而容器是動態的,里面運行著我們指定的應用
-
-
倉庫
-
-
簡單來說就是,不同的應用程序所依賴的環境不一樣,如果把他們依賴的軟件都安裝在一個服務器上,不僅需要調試很久,而且可能會有沖突。 如果想把兩個應用程序隔離起來,可以在服務器上創建不同的虛擬機,不同的虛擬機放不同的應用,但是虛擬機的開銷比較高。docker作為輕量級的虛擬機,是一個很好的工具
-
-
作用
-
解決運行環境不一致所導致的問題。這樣就不會產生“本地運行沒問題,可一到服務器上就不行了”的情況。 限定最大的cpu使用內存硬盤,這樣就起到了隔離的作用,避免產生“一塊代碼產生死循環,把磁盤占滿了,其它程序也掛了”的情況。
-
-
為什么要使用doker?
作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢
首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個 Docker 容器。
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可
Docker 比傳統虛擬機幾大優點。
更高效的利用系統資源
由于容器不需要進行硬件虛擬以及運行完整操作系統等額外開銷,Docker對系統資源的利用率更高,無論是應用執行速度,內存消耗以及文件存儲速度,都要比傳統虛擬機技術更高效。因此,相比虛擬機技術,一個相同配置的主機,往往可以運行更多數量的應用
更快速的的啟動時間
傳統的虛擬機技術啟動應用服務往往需要數分鐘,而Docker容器應用,由于直接運行與宿主內核,無序啟動完整的操作系統,因此可以做到妙級,甚至毫秒級的啟動時間,大大的節約了開發,測試,部署的時間。
一致的運行環境
開發過程中一個常見的問題是環境一致性問題,由于開發環境,測試環境,生產環境不一致,導致有些bug并未在開發過程中被發現,而Docker的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性。從而不會再出現(這段代碼在我機器上運行沒問題啊)zz這類問題。
持續交付和部署
對于開發和運維人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。
?
使用Docker可以通過定制應用鏡像來實現持續集成,持續交付,部署。開發人員可以通過Dockerfile來進行鏡像構建,并結合持續集成系統進行集成測試,而運維人員則可以在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署
更輕松的遷移
由于Docker確保了執行環境的一致性,使得應用的遷移更加容易,Docker可以在很多平臺上運行,無論是物理機,虛擬機,公有云,私有云,甚至是比較本,其運行結果是一致的,因此用戶可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況
更輕松的維護和擴展
Docker使用的分層存數以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得非常簡單,此外,Docker團隊同各個開源項目團隊一起維護了一大批高質量的官方鏡像,既可以直接在生產環境使用,又可以作為基礎進一步定制,大大的降低了應用服務的鏡像制作成本。
更快速的交付和部署
對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。
開發者可以使用一個標準的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。Docker 可以快速創建容器,快速迭代應用程序,并讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。
更高速的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化并且高效的管理。
對比傳統虛擬機總結
| 特性 | 容器 | 虛擬機 |
|---|---|---|
| 啟動 | 秒級 | 分鐘級 |
| 硬盤使用 | 一般為 MB | 一般為 GB |
| 性能 | 接近原生 | 弱于 |
| 系統支持量 | 單機支持上千個容器 | 一般幾十個 |


浙公網安備 33010602011771號