天天看點

關于docker容器和鏡像的差別

  docker的整個生命周期有三部分組成:鏡像(image)+容器(container)+倉庫(repository);

        如下圖所示,容器是由鏡像執行個體化而來,這和我們學習的面向對象的概念十分相似,我們可以把鏡像看作類,把容器看作類執行個體化後的對象。

也可以說鏡像是檔案, 容器是程序。 容器是基于鏡像建立的, 即容器中的程序依賴于鏡像中的檔案, 這裡的檔案包括程序運作所需要的可執行檔案, 依賴軟體, 庫檔案, 配置檔案等等...

            docker 的鏡像概念類似虛拟機的鏡像。是一個隻讀的模闆,一個獨立的檔案系統,包括運作容器所需的資料,可以用來建立新的容器。(  docker create <image -id > :為指定的鏡像添加一個可讀寫層,構成一個新的容器;)

例如:一個鏡像可以包含一個完整的ubuntu作業系統環境,裡面僅安裝了mysql或使用者需要的其他應用程式。

docker鏡像實際上是由一層一層的系統檔案組成,這種層級的檔案系統被稱為UnionFS( Union file system  統一檔案系統),鏡像可以基于dockerfile建構,dockerfile是一個描述檔案,裡面包含了若幹條密令,每條指令都會對基礎檔案系統建立新的層次結構。

docker提供了一個很簡單的機制來建立鏡像或更新現有的鏡像。使用者甚至可以從其他人那裡下載下傳一個已經做好的鏡像直接使用。(鏡像是隻讀的,可以了解為靜态檔案)

           docker利用容器來運作應用:docker容器是由docker鏡像建立的運作執行個體。docker容器類似虛拟機,可以執行包含啟動,停止,删除等。每個容器間是互相隔離的。容器中會運作特定的運用,包含特定應用的代碼及所需的依賴檔案。可以把容器看作一個簡易版的linux環境(包含root使用者權限,程序空間,使用者空間和網絡空間等)和運作在其中的應用程式。

  相對于鏡像來說容器是動态的,容器在啟動的時候建立了一層可寫層次作為最上層。(   docker create <image -id > :為指定的鏡像添加一個可讀寫層,構成一個新的容器;)

docker倉庫:如果使用了git和github就很容易了解docker的倉庫概念。docker倉庫概念和git類似。

docker倉庫是用來包含鏡像的位置,docker提供了一個注冊伺服器(register)來儲存多個倉庫,每個倉庫又可以包含多個具備不同tag的鏡像,

docker運作中使用的預設倉庫是docker hub公共倉庫。

倉庫支援的操作類似git,當使用者建立了自己的鏡像之後就可以使用push指令将它上傳到共有或者私有的倉庫。這樣下次再另外一台機器上使用這個鏡像的時候隻需要從倉庫裡面pull下來就可以了。

轉載一篇對docker介紹比較好的文檔:https://www.cnblogs.com/ECJTUACM-873284962/p/9789130.html

上一篇: 第八天
下一篇: Java SPI詳解