1. 程式人生 > >docker 學習(一)

docker 學習(一)

虛擬環境 虛擬系統 沙箱 16px php 之前 內部 多說 上線

Sandboxie(沙箱):一個虛擬系統程序,允許你在沙盤環境中運行瀏覽器或其他程序,因此運行所產生的變化可以隨後刪除。它創造了一個類似沙盒的獨立作業環境,在其內部運行的程序並不能對硬盤產生永久性的影響。其為一個獨立的虛擬環境,可以用測試不受信任的應用程序或上網行為。

百度上的定義: Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

docker解決什麽問題

  1.不同的應用程序可能會有不同的應用環境,比如.net開發的網站和php開發的網站依賴的軟件就不一樣,如果把他們依賴的軟件都安裝在一個服務器上就要調試很久,而且很麻煩,還會造成一些沖突。比如IIS和Apache訪問端口沖突。這個時候你就要隔離.net開發的網站和php開發的網站。常規來講,我們可以在服務器上創建不同的虛擬機在不同的虛擬機上放置不同的應用,但是虛擬機開銷比較高。docker可以實現虛擬機隔離應用環境的功能,並且開銷比虛擬機小,小就意味著省錢了。

  2.你開發軟件的時候用的是Ubuntu,但是運維管理的都是centos,運維在把你的軟件從開發環境轉移到生產環境的時候就會遇到一些Ubuntu轉centos的問題,比如:有個特殊版本的數據庫,只有Ubuntu支持,centos不支持,在轉移的過程當中運維就得想辦法解決這樣的問題。這時候要是有docker你就可以把開發環境直接封裝轉移給運維,運維直接部署你給他的docker就可以了。而且部署速度快。

  3.在服務器負載方面,如果你單獨開一個虛擬機,那麽虛擬機會占用空閑內存的,docker部署的話,這些內存就會利用起來。

有了docker, 就不用裝環境了,不用配置環境,更不用統一環境,因為docker都打包好了。Docker在實際應用中亦起集裝箱之用——將開發、運行環境打包,方便開發環境布置以及運行環境部署,可以較好地減少環境部署的時間。而且在電腦上每個Docker容器可以工作而互不影響。docker就是存放應用的一個容器,環境什麽的都都自己配置好了。

在集裝箱之前,貨物運輸沒有統一的標準方式進行搬運,於是鐵路、公路、海洋等各種運輸之間,需要大量的人力作為貨物中轉,效率極低,而且成本很高。集裝箱出現之後,世界上絕大多數的貨物運輸都可以放到這個神奇的箱子裏,然後在公路、鐵路、海洋等所有運輸場景下,這個箱子都可以不用變化形態直接可以承運,而且中間的中轉工作,都可以通過大型機械搞定,效率大大提升。從此全球化開始,商業的潛力被進一步挖掘......牛逼之處我就不多說了,可是這個箱子為什麽這麽神奇呢?答案其實也就在上面的描述中,無非就是兩個字:標準。

  Java號稱“一次編譯,到處運行”,因為java虛擬機解決平臺的兼容性問題,所以有java虛擬機的地方就能跑java代碼;

  Docker是:“一次封裝,到處運行”,因為docker決絕了應用環境的問題,安裝了docker的平臺就能跑“docker包”,這樣就決絕了“開發環境能跑,一上線就崩”的尷尬。

docker的優點?

1、開盒即用(和虛擬機相比 2、運行效率高(和虛擬機相比 3、環境獨立(多個docker之間互不影響 4、可二次開發(Docker中,每個人都可以將別人做好的image(鏡像,只讀)拿來進一步配置,進而得到自己所需要的環境(Docker官網上也會提供很多image的)。也可以將自己配置好的環境封裝成image發布交由他人使用。
5、可快速配置(通過Dockerfile可以快速生成所需環境,配置極其方便 6、

docker 學習(一)