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 和傳統虛擬化方式的不同之處,可見容器是在作業系統層面上實現虛擬化,直接復用本地主機的作業系統,而傳統方式則是在硬體層面實現。
作為一種新興的虛擬化方式,docker 跟傳統的虛擬化方式相比具有眾多的優勢。
首先,docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機器方式要快得多。 其次,docker 對系統資源的利用率很高,一台主機上可以同時執行數千個 docker 容器。
容器除了執行其中應用外,基本不消耗額外的系統資源,使得應用的效能很高,同時系統的開銷盡量小。傳統虛擬機器方式執行 10 個不同的應用就要起 10 個虛擬機器,而docker 只需要啟動 10 個隔離的應用即可。
具體說來,docker 在如下幾個方面具有較大的優勢。
對開發和運維(devop)人員來說,最希望的就是一次建立或配置,可以在任意地方正常執行。
開發者可以使用乙個標準的映象來構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署**。 docker 可以快速建立容器,快速迭代應用程式,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程式是如何建立和工作的。 docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。
docker 容器的執行不需要額外的 hypervisor 支援,它是核心級的虛擬化,因此可以實現更高的效能和效率。
docker 容器幾乎可以在任意的平台上執行,包括物理機、虛擬機器、公有雲、私有雲、個人電腦、伺服器等。 這種相容性可以讓使用者把乙個應用程式從乙個平台直接遷移到另外乙個。
使用 docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。
特性容器
虛擬機器啟動
秒級分鐘級
硬碟使用
一般為 mb
一般為 gb
效能接近原生
弱於系統支援量
單機支援上千個容器
一般幾十個
docker的三大核心概念:
映象:類似於虛擬機器映象,乙個面向docker引擎的唯讀模組,包含了檔案系統。用來建立docker容器。映象採用分層機制,每個映象都是唯讀的,但是可以將寫資料的層通過聯合檔案系統附加在原有的映象之上。這種增量式修改使得映象非常容易儲存、傳輸和更新。
容器:類似於乙個輕量級沙箱,docker利用容器來執行和隔離應用。容器是從映象建立的執行例項。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。容器易於互動、便於傳輸、易移植、易擴充套件,非常適合進行軟體開發、軟體測試以及軟體產品的部署。
玩轉Docker之搭建Mysql環境
mkdir mysql cd mysql docker pull mysql docker run it name mysql v pwd logs logs v pwd conf etc mysql conf.d p 3306 3306 e mysql root password 123456 d...
利用Docker輕鬆玩轉Cassandra
摘要 cassandra 是乙個流行的分布式nosql資料儲存系統。最近有客戶問起了cassandra在如何docker中執行的一些問題。本文將利用docker compose和阿里雲容器服務輕鬆玩轉cassandra cassandra 是乙個流行的分布式nosql資料儲存系統。最近有客戶問起了c...
docker學習之docker命令
在csdn的第一篇文章,排版之類的慢慢研究,先把內容充實上去,菜雞起步,坐穩扶好了 首先我們要牢記並善於使用乙個最最最重要的命令 docker help help這個選項大家都知道是幹嘛的吧,不會help一下,這個在docker的命令分支中也賊好用,例如關於docker image可以幹那些事就可以...