Docker 容器數據卷(掛載)


一、容器數據卷

  docker 容器數據卷是容器在運行過程中持久化數據的一種方式,卷是目錄或文件,存在於一個或多個容器中,由docker 掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System  提供一些用於持續存儲或共享數據的特性;卷的設計目的就是數據持久化,完全獨立於容器的生命周期,因此docker不會在容器刪除時,刪除其掛載的數據卷。

  特點:

  1. 數據卷可在容器之間共享或重用數據。
  2. 卷中的更改可以直接生效。
  3. 數據卷中的更改,不會包含在鏡像中的更新。
  4. 數據卷的生命周期一直持續到沒有容器使用它為止。

二、 容器數據卷添加

    1.  直接命令添加
      docker run -it -v /宿主機絕對路徑:/容器內目錄:權限   鏡像名

      權限: ro (容器只能查看)

      例: 啟動一個 tomcat 容器 ,在容器 webapps 中增加一份文件,並且增加修改記錄。同時宿主機也做相同操作。

        1.1  啟動Tomcat容器,執行完此命令后我們已經啟動一個tomcat 。

             並且宿主機的/home/webapps目錄和容器中的 /usr/local/tomcat/webapps 目錄相關聯,當這兩個目錄中的文件會互相同步

      docker run -d -p 8080:8080 --name tomcat-v  -v /home/webapps:/usr/local/tomcat/webapps tomcat

             1.2  在宿主機的 /home/webapps 中創建一個 hello-host.txt 文件,在容器的 /usr/local/tomcat/webapps 目錄中也創建一個 hello-tomcat.txt文件,文件內容為文件名。

             

             

            1.3 查看容器中的文件,和宿主機中的文件
             容器中:
             

             宿主機中:

             
            1.4  通過 docker inspect 命令查看掛載信息
             

      docker inspect 72f574d46676

       

    2.  docker file 添加,使用 CentOS 演示

      1. 創建一個 Dockerfile 文件

         

      2. 編輯文件內容,寫入以下信息
        FROM centos
        VOLUME ["/dataVlolumeContainer1","/dataVlolumeContainer1"]
        CMD echo "finished,-----------success"
        CMD /bin/bash

        FROM  來自於一個父類的鏡像

        VOLUME  給鏡像添加一個或多個容器卷

        CMD  控制台執行的命令

      3.  build   構建鏡像
        docker build -f /home/my-docker-file/Dockerfile -t  qizhi/centos  .

        參數:
          -f 指定dockerfile 文件,默認情況下在執行命令的目錄下尋找 Dockerfile 文件
        -t 指定鏡像名稱
        . 在當前目錄下生成鏡像

         

      4. 運行我們自己構建的鏡像,並進入鏡像,查看我們自己生成鏡像時創建的兩個文件夾

        啟動並進入容器:
        docker run -it qizhi/centos /bin/bash

         

      5. 在容器我們構建的兩個容器卷中創建一個文件,並寫入一些文字。

         

      6. 在宿主機中查看我們在容器卷中創建的文件,和寫入的文件內容。
        注: 可以使用 ctrl + q + P 退出容器,讓容器進入后台運行。退回宿主機中

        使用 inspct 命令查看容器信息找到宿主機中相應的容器卷
        docker inspect 1c56ca8581ea

         

      7.  查看宿主機中的文件內容



免責聲明!

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



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