什麽是docker
什麽是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