現在一聊到容器技術,大家就默認是指 Docker 了。但事實上,在 Docker 出現之前,PaaS社區早就有容器技術了,以 Cloud Foundry、OpenShift 為代表的就是當時的主流。
那為啥最終還是 Docker 火起來了呢?
因為傳統的PaaS技術雖然也可以一鍵將本地應用部署到雲上,並且也是採用隔離環境(容器)的形式去部署,但是其兼容性非常的不好。因為其主要原理就是將本地應用程序和啟停腳本一同打包,然後上傳到雲伺服器上,然後再在雲伺服器里通過腳本啟動這個應用程序。
這樣的做法,看起來很理想。但是在實際情況下,由於本地與雲端的環境差異,導致上傳到雲端的應用經常各種報錯、運行不起來,需要各種修改配置和參數來做兼容。甚至在項目迭代過程中不同的版本代碼都需要重新去做適配,非常耗費精力。
然而 Docker 卻通過一個小創新完美的解決了這個問題。在 Docker 的方案中,它不僅打包了本地應用程序,而且還將本地環境(操作系統的一部分)也打包了,組成一個叫做「 Docker鏡像 」的文件包。所以這個「 Docker鏡像 」就包含了應用運行所需的全部依賴,我們可以直接基於這個「 Docker鏡像 」在本地進行開發與測試,完成之後,再直接將這個「 Docker鏡像 」一鍵上傳到雲端運行即可。
Docker 實現了本地與雲端的環境完全一致,做到了真正的一次開發隨處運行。
一、容器到底是什麼?
容器到底是什麼呢?也許對於容器不太了解,但我們對虛擬機熟悉啊,那麼我們就先來看一下容器與虛擬機的對比區別: