本篇來自於尚硅谷周陽老師 https://www.bilibili.com/vide...
百度簡介:Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器或Windows 機器上,也能夠實現虛擬化,容器是徹底使用沙箱機制,相互之間不會有任何接口。docker
一個完整的Docker有如下幾個部分組成:數據庫
一款產品從開發到上線,從操做系統,到運行環境,再到應用配置。做爲開發+運維之間的協做咱們須要關心不少東西,這也是不少互聯網公司都不得不面對的問題,特別是各類版本的迭代以後,不一樣版本環境的兼容,對運維人員都是考驗segmentfault
Docker鏡像的設計,使得Docker得以打破過去「程序即應用」的觀念。透過鏡像(images)將做業系統核心除外,運做應用程式所須要的系統環境,由下而上打包,達到應用程式跨平臺間的無縫接軌運做。服務器
Docker是基於Go語言實現的雲開源項目。
Docker的主要目標是「Build,Ship and Run Any App,Anywhere」,也就是經過對應用組件的封裝、分發、部署、運行等生命週期的管理,使用戶的APP(能夠是一個WEB應用或數據庫應用等等)及其運行環境可以作到「一次封裝,處處運行」。
Docker解決了運行環境和配置問題軟件容器,方便作持續集成並有助於總體發佈的容器虛擬化技術。架構
虛擬機(virtual machine)就是帶環境安裝的一種解決方案。
它能夠在一種操做系統裏面運行另外一種操做系統,好比在Windows 系統裏面運行Linux 系統。應用程序對此毫無感知,由於虛擬機看上去跟真實系統如出一轍,而對於底層系統來講,虛擬機就是一個普通文件,不須要了就刪掉,對其餘部分毫無影響。這類虛擬機完美的運行了另外一套系統,可以使應用程序,操做系統和硬件三者之間的邏輯不變。 運維
虛擬機的缺點:ide
容器與虛擬機有所不一樣,虛擬機經過虛擬軟件中間層將一臺或者多臺獨立的虛擬機器運行在物理硬件之上。而容器則是直接運行在操做系統內核之上,是進程級別的,並對進程進行了隔離,而不是模擬一個完整的操做系統。所以,容器虛擬化也被稱爲「操做系統級虛擬化」,容器技術能夠將軟件須要的環境配置都打包到一個隔離的容器中。讓多個獨立的容器高效且輕量的運行在同一臺宿主機上。而Docker就是爲了實現這一切而生的。ui
傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操做系統,在該系統上再運行所需應用進程;spa
而容器內的應用進程直接運行於宿主的內核,容器內沒有本身的內核,並且也沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。操作系統
每一個容器之間互相隔離,每一個容器有本身的文件系統 ,容器之間進程不會相互影響,能區分計算資源。