1. 程式人生 > >docker知識點相關筆記四

docker知識點相關筆記四

  1. 什麼叫做資料卷容器?
     命名的容器掛載資料卷,其它容器通過掛載這個(父容器)實現資料共享,掛載資料卷的容器,
     稱之為資料卷容器 。
  2. 下面我們基於之前建立的映象kgf/centos去建立3個容器,名稱分別為dc01,dc02和dc03,這三個
     容器的關係是dc02和dc03都繼承與dc01,下面我們通過例項操作試一下。
      ⑴建立dc01的容器,命令:docker run -it --name dc01 kgf/centos
          
          上面的dataVolumeContainer2和dataVolumeContainer目錄是之前建立kgf/centos映象
           時建立的據數卷。那麼現在我們在dataVolumeContainer2中建立一個檔案。
           

      ⑵建立dc01的容器,繼承dc01容器
          命令:docker run -it --name dc02 --volumes-from dc01 kgf/centos
            
     ⑶建立dc03的容器,繼承dc01容器
          命令:docker run -it --name dc03 --volumes-from dc01 kgf/centos
          
     ⑷下面我們分別檢視dc01,dc02中的資料卷情況。
          

          通過上面我們可以發現,我們建立的dc01,dc02和dc03它們之間的關聯資料卷中的
          資料是可以資料共享的,不管是哪個容器的資料發成了變化,那麼其它的兩個容器
          的資料也將會發生同樣的改變。
  3. 那麼基於上面我們建立的dc01,dc02和dc033個容器,如果我們將dc01刪除掉,再去
    修改dc02,那麼dc03會不會發生資料同步呢?能不能獲取到dc02修改後的資料呢?
    ⑴首先刪除掉dc01容器
          
        

        由上圖可以發現我們刪除了dc01這個父容器後,對dc02和dc03的檔案沒有產生
        影響,檔案都還存在。
    ⑵我們在dc02上新增一個檔案試試
         
    ⑶結論:
         容器之間的配置資訊的傳遞,資料卷的生命週期一直會持續到沒有容器為止。
          這就叫做容器卷傳遞共享(--volumes-from)
          
  4. 什麼是Dockerfile?
     Dockerfile是用來構建docker映象的構建檔案,是由一系列命令和引數構成的指令碼。
  5. 構建Dockerfile的三步驟:
     a:編寫Dockerfile檔案
     b:docker build去執行檔案
     c:docker run去執行生產的映象
  6. Dockerfile的構建過程解析
     ⑴DockerFile內容基礎知識
          a:每條保留字指令都必須為大寫字母且後面要跟隨至少一個引數
          b:指令按照從上到下,順序執行
          c:#表示註釋
          d:每條指令都會建立一個新的映象層,並對映象進行提交
     ⑵Docker執行Dockerfile的大致流程
          a:dcoker從基礎映象執行一個容器
          b:執行一條指令並對容器做出修改
          c:執行類似docker commit的操作提交一個新的映象層
          d:docker再基於剛提交的映象執行一個新容器
          e:執行dockerfile中的下一條指令直到所有指令都執行完成
     ⑶dockerfile的體系結構(保留字指令)
          ①FROM:表示基礎映象,當前新映象是基於哪個映象的。
                 例如:FROM tomcat  -----》就是基於tomcat作為基礎映象的
          ②MAINTAINER:表示映象維護者的姓名和郵箱地址    
                 例如:MAINTAINER The Centos Project <[email protected]>
          ③RUN:表示容器構建時需要執行的命令
          ④EXPOSE:表示構建的容器啟動後對外暴露的埠號
                 例如:EXPOSE 6379
          ⑤WORKDIR:表示指定在容器建立後,終端預設登入進來的工作目錄,一個落腳點      
                 例如:WORKDIR /data   表示當我們進入容器後預設就在/data這個目錄下
          ⑥ENV:用來在構建映象過程中設定環境變數
                 例如:ENV MY_PATH /usr/mytest   表示我們設定一個環境變數名稱為MY_PATH,
                            值為/usr/mytest,那麼我們後面就可以引用這個環境變數。比如我們在設定
                            落腳點的時候,WORKDIR $MY_PATH,那麼登入進來後直接就是在/usr/mytest
                            目錄下。
          ⑦ADD: 將宿主機目錄下的檔案拷貝進映象並且ADD命令會自動處理URL和解壓tar壓縮包     
                 例如:ADD centos-7-docker.tar.xz /
          ⑧COPY:類似ADD,拷貝檔案和目錄到映象中。將從構建上下文目錄中<源路徑>的檔案/目錄
                           複製到新的一層映象內的<目標路徑>位置。
                 例如:COPY src dest 或者 COPY ["src","dest"]
          ⑨VOLUME:容器資料卷,用於資料儲存和持久化工作
          ⑩CMD:
                  a:表示指定一個容器啟動時要執行的命令
                        
                  b:Dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run 之後
                        的引數替代。
          ENTRYPOINT:表示指定一個容器啟動時要執行的命令,ENTRYPOINT的目的和CMD一樣,
                                     都是在指定容器啟動程式及引數。
          ONBUILD:表示當構建一個被繼承的Dockerfile時執行命令,父映象在被子繼承後父映象的
                              onbuild被觸發。
  7. 基於上面保留字的案例
     ⑴Base映象(scratch)
           Docker Hub中99%的映象都是通過在base映象中安裝和配置需要的軟體構建出來的。
     ⑵自定義映象mycentos
           ①我們現在可以看看我們從網上下載下載的centos映象原本是什麼樣子的
                 
           ②下面我們編寫我們的Dockerfile檔案
                 a:在/tmp/mydocker目錄下建立Dockerfile檔案
                      
                b:編寫檔案內容
                     
               c:使用dockerfile檔案構建新的映象
                    命令:docker build -f /tmp/mydocker/Dockerfile -t mycentos:1.1 .
                    
                    
              d:下面我們執行新建的映象
                     命令:docker run -it mycentos:1.1
                     
                     
                      
               e:使用docker history +映象ID 檢視映象詳細資訊
                    
  8. ONBUILD命令案例
      ⑴簡介
           當構建一個被繼承的Dockerfile時執行命令,父映象在被子繼承後,父映象的onbuild被觸發。
       ⑵簡單案例:
              
            




    上一篇:docker知識點相關筆記三
    下一篇:docker知識點相關筆記五
    文章目錄