天天看點

docker系列—何為Docker

是什麼

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後釋出到任何流行的 Linux或Windows 機器上,也可以實作虛拟化。容器是完全使用沙箱機制,互相之間不會有任何接口。

一個完整的Docker有以下幾個部分組成:

  1. DockerClient用戶端
  2. Docker Daemon守護程序
  3. Docker Image鏡像
  4. DockerContainer容器

理念

Docker的思想來自于集裝箱,集裝箱解決了什麼問題?

在一艘大船上,可以把貨物規整的擺放起來。并且各種各樣的貨物被集裝箱标準化了,集裝箱和集裝箱之間不會互相影響。那麼我就不需要專門運送水果的船和專門運送化學品的船了。隻要這些貨物在集裝箱裡封裝的好好的,那我就可以用一艘大船把他們都運走。

一款産品從開發到上線,從作業系統,到運作環境,再到應用配置。作為開發+運維之間的協作我們需要關心很多東西,這也是很多網際網路公司都不得不面對的問題,特别是各種版本的疊代之後,不同版本環境的相容,對運維人員都是考驗

Docker之是以發展如此迅速,也是因為它對此給出了一個标準化的解決方案。

環境配置如此麻煩,換一台機器,就要重來一次,費力費時。很多人想到,能不能從根本上解決問題,軟體可以帶環境安裝?也就是說,安裝的時候,把原始環境一模一樣地複制過來。開發人員利用 Docker 可以消除協作編碼時“在我的機器上可正常工作”的問題。

docker系列—何為Docker

傳統上認為,軟體編碼開發/測試結束後,所産出的成果即是程式或是能夠編譯執行的二進制位元組碼等(java為例)。而為了讓這些程式可以順利執行,開發團隊也得準備完整的部署檔案,讓維運團隊得以部署應用程式,開發需要清楚的告訴運維部署團隊,用的全部配置檔案+所有軟體環境。不過,即便如此,仍然常常發生部署失敗的狀況。Docker鏡像的設計,使得Docker得以打破過去「程式即應用」的觀念。透過鏡像(images)将作業系統核心除外,運作應用程式所需要的系統環境,由下而上打包,達到應用程式跨平台間的無縫接軌運作。