Docker入門之二鏡像


Docker大部分的操作都是圍繞三大核心概念:鏡像、容器、倉庫。學Docker首先得了解這幾個詞。這幾個詞可能平時也會有涉及,但Docker中可能不是同樣得概念。

一、三大核心概念

鏡像:可能在安裝軟件操作系統的時候可能會用到鏡像,Docker中的鏡像也操作系統鏡像文件類似,可以理解成是一個模板,這個有點類似手機app應用。

容器:容器就是用來裝東西的,Docker中容器用來裝什么呢,它用來裝由鏡像創建的應用運行實例。這個有點類似手機中的沙盒,每個手機app都用自己的運行環境,不受其他app的影響。

倉庫:倉庫也是用來存放東西的,它是一種靜態的,存放的是鏡像文件,而容器是一種動態的,運行的是鏡像。這個有點類似app store,用戶可以從倉庫中下載app安裝到手機中,手機中每個應用都是一個沙盒環境。

三大核心一篇博客是寫不完的,一個一個的來,今天先學習下鏡像image。首先在學習Docker時如果有的地方比如參數什么的不知道了,我們可以通過help來熟悉,比查其他的資料書快多了。如果我們不知道怎么用了,我們可以先通過docker --help來獲取大的知識點,然后找到對應的小的知識點,然后再help,而且英文注釋也不是很難。

二、鏡像

Docker運行容器前需要本地存放有對應的鏡像,如果鏡像沒有,會存默認的倉庫下載,既然是默認倉庫那肯定是公共的,當然也可以自定義自己私有的鏡像倉庫。

1.獲取鏡像

使用鏡像首先得獲取鏡像,使用pull來拉取鏡像文件到本地。使用它還是先看help。可以看到它得格式和一些參數說明。

docker pull --help

下圖是使用pull來獲取hello-world鏡像。tag是取最新得。

2.查看鏡像

使用docker images --help來查看格式和參數說明

下面截圖中使用了-a、--digests、--no-trunc -q

 3.使用tag添加鏡像標簽 還是先help

這里我還是使用hello-world鏡像,給它一個標簽myhello-world,可以留意下它們兩個的id,其實它們指向同一個鏡像,只是給它起了個別名。

4.使用inspect查看詳細信息,還是老套路,看help

通過inspect查看hello-world的信息

5.使用history查看鏡像歷史記錄

第一步還是通過help查看格式和參數

下面使用history查看hello-world的記錄

 6.鏡像查找

可以使用search來查找鏡像,還是help來查看格式和參數

下圖是查找hello-world 鏡像,這個查找stars>3的

7.刪除鏡像

還是先看help,使用rmi時,如果通過標簽刪除鏡像時,如果該鏡像只有一個標簽,那在刪除標簽之后也會把該鏡像也刪除,如果有多個標簽那只刪除對應的標簽,如果通過ID刪除,如果該鏡像創建的容器存在是鏡像文件無法刪除,其次會嘗試刪除所有指向該鏡像的標簽,然后刪除該鏡像文件本身。

  1. 使用標簽刪除鏡像

    下面刪除了myhello_world的鏡像,然后查看鏡像列表,發現只有hello-world了。

             

       2.使用鏡像ID刪除鏡像

    下圖可以看到,我想通過id刪除鏡像hello-world時,有一個錯誤,說不能刪除,因為這個鏡像在被容器8a2faee3dfa4使用,使用ps查看容器,還真有一個容器id是這個。

    

    

    那直接刪除鏡像不行,該怎么正確刪除呢?我們可以先刪除依賴鏡像的所有容器,然后再來刪除鏡像。

    

    上圖嘗試刪了幾次,一直提示有沖突,把所有與它依賴的容器刪完了,才能刪除鏡像,這確實有點麻煩,其實可以使用-f參數強制刪除,不過這中太暴力了。

8.創建鏡像

  還是通過help來查看格式以及參數

  

  1. 基於已有鏡像的容器創建
    首先查看下容器記住容器id,然后使用commit提交並將鏡像id設置為cuiywhelloworld.
  2. 基於本地模板導入
    還是通過help來查看格式和參數

    這里沒找到合適的模板就沒做實驗。暫留着,或者有沒有朋友給提供一個能在window下使用的模板。

9.存出和載入鏡像

  1. 存出鏡像
    可以使用save來存出鏡像 通過-o來指定路徑
  2. 載入鏡像
    可以使用load來載入鏡像
  3. 實驗
    下圖是我先導出鏡像hello-world到E盤,導出后可以在E:\docker下看到helloworld.tar文件,然后又將tar鏡像壓縮文件導入

10.上傳鏡像
  有pull拉就有push推,使用push可以提交鏡像
  

  這里先將cuiywhelloworld添加一個新的標簽cuiyw/helloworld,然后通過push cuiyw/helloworld來提交,不過好尷尬,提交請求被拒,失敗了。有沒有老司機可以直接提交到公共倉庫的,等學到倉庫得時候再提交試一試。

  

三、總結

花了昨晚一個晚上加今天一天的時間終於把鏡像這塊大致學了一下,內容蠻多的,可能截圖畢竟多,文字畢竟少,還是方法,按照一定的套路來學,也能很快上手,最重要的還是help。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM