1. 程式人生 > >什麽是docker

什麽是docker

mon 完成 鏡像倉庫 env 設置 rest lin 技術 私有

什麽是docker

官方概念

開源的應用容器引擎

定位

虛擬化容器,是一個單機應用

理解

1.類似於JVM跨平臺的概念,使用容器引擎解決平臺依賴問題

2.以鏡像的形式發布自己的應用,運行在任何一個裝有容器引擎的操作系統上

3.類似於GITHUB,將自己的應用(鏡像)發布到鏡像倉庫(共有/私有)中

原理

把軟件和它依賴的環境(包括操作系統和共享庫等)、以來的配置文件打包在一起,以鏡像的形式放到官方倉庫,只要安裝了容器引擎,就可以不作任何修改,運行這個軟件。

分層共享+內核虛擬化實現輕量化虛擬機

分層共享

把一個應用分為任意多個層,比如操作系統(第一層),依賴的庫和第三方軟件(第二層),應用的軟件包和配置文件(第三層)。如果兩個應用有相同的底層,就可以共享這些層。

內核虛擬化

與宿主機運行在相同的linux內核,不需要指令集模擬。代表:LXC、OpenVZ、Vserver...

共享層沖突問題與解決

問題

如果應用A需要修改操作系統的某個配置,應用B不需要修改,改了就會出錯

解決

給每個應用新增一個優先級最高的空白層。

新增A:在最上面的空白層創建一個文件A

刪除B:在最上層,把B文件設置為不存在

修改C:把第一層的C文件拷貝到最上層,修改C

拿到1.0版本,所有的增刪改位於最上層,變更操作完成後,打包為新鏡像,版本1.1,發布到鏡像倉庫中(發布時,只會發布更改的第四層,非常快速)

技術分享

架構

C/S架構

docker daemon作server端,在宿主機上以後臺守護進程形式運行

client端比較靈活,可以是本機(以bin命令形式發送指令),也可以是遠程(以RESTful AP的形式發送指令)

解決方案

技術分享

docker使用流程圖

技術分享

什麽是docker