docker總結

來點專業術語先

paas  platform as service  平臺即服務

iaas  Infrastructure as a Service 基礎設施即服務

saas    Software-as-a-Service   軟件即服務

Docker.io和一個完全的虛擬機的區別?

答:現在docker內部使用的技術是Linux容器(LXC技術),運行在與它宿主機同樣的操作系統上,准許它可以和宿主機共享許多系統資源,它也會使用AuFS作爲文件系統,也爲你管理網絡。AuFS是一個層狀的文件系統,因此你可以有一個只讀和一個只寫部分,二者結合起來,可以使系統的共同部分用做只讀,那塊被所有容器共享,並且給每個容器自己的可寫區域

讓我們假設你有一個容器鏡像(image)容量是1GB,如果你想用一個完整的虛擬機來裝載,你得需要容量的大小是1GB乘上你需要虛擬機的數量。但使用Linux容器虛擬化技術(LXC)和AuFS,你可以共享1GB容量,如果你需要1000個容器,假設他們都運行在同樣的系統影像上,你仍然可以用稍微比1GB多一點的空間來給容器系統

docker想比完全的虛擬機,可以實現基礎共享,一個完整的虛擬化系統得到了分給它的自有全部資源,只有最小的共享。你獲得了更多的隔離,但是這是很龐大的(需要更多的資源)


應用場景:

一個完整的虛擬系統通常得用幾分鐘去啓動,linux容器虛擬技術(LXC)只要數秒,甚至有時時間更短。

對於每種虛擬系統都有反對者和支持者。如果你希望一個完全隔離的和資源有保障的環境,那麼完全的虛擬機是你的選擇。如果你只希望進程之間相互隔離,並且希望大量運行他們在一個合理大小的宿主機器上。那麼linux容器虛擬技術(LXC)是你的選擇。

部署一個一致的生產環境說起來容易做起來難。即使你使用了chef 和puppet之類的工具,像操作系統升級,還有一些其它的事情而造成的主機及環境之間的改變,往往是常有的事。

docker所做的事情就是賦予你一種能力,使你可以將OS快照存入一個通用的鏡像,並使得在往其它的docker主機上部署時變得容易。對於本地,開發、質量管理、產品等等,都是用的同一個鏡像。當然你也可以用其它的工具來做到這一點,但是可能沒有這麼容易或者這麼快。

這對於單元測試是非常棒的。讓我們來看看你有1000個測試,而且都需要連接數據庫。爲了不破壞任何事情,你需要一個接着一個的運行,以便這些測試不會相互影響(每個測試都在事務中,然後回滾回去)。使用Docker,那麼你可以創建一個數據庫的鏡像(image),既然你知道這些測試會運行在相同的的數據庫快照下,那麼就可以並行地運行所有測試。既然這些測試都是並行運行在linux容器中,那麼他們可以同時運行在同樣的環境中。這樣你的測試會完成的非常快。試着用完整的虛擬機來做這件事。

通俗的講就是要做什麼事,先做一個鏡像,然後大家一起同時用這個通用鏡像

你開始有個基礎 鏡像(image),然後進行改變數據,並且使用docker提交這些改變,這個會建立一個鏡像(image),這個 鏡像(image)只包含數據改變的部分。當你想運行你的這個 鏡像(image)你仍然需要這基礎 鏡像(image),然後使用層式的文件系統,將你的映像置於基礎映像之上,這個例子中用AUFS,AUFS將不同層融合起來,然後你就會得到你想要的,你只要簡單運行就可以了。你可以增加許多的 鏡像(image),這些 鏡像(image)只會記錄改變的地方。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章