Docker容器數據卷介紹和命令


是什么

一句話:有點類似我們Redis里面的rdb和aof文件

先來看看Docker的理念:

*  將運用與運行的環境打包形成容器運行 ,運行可以伴隨着容器,但是我們對數據的要求希望是持久化的

*  容器之間希望有可能共享數據

Docker容器產生的數據,如果不通過docker commit生成新的鏡像,使得數據做為鏡像的一部分保存下來,

那么當容器刪除后,數據自然也就沒有了。

為了能保存數據在docker中我們使用卷。

能干嘛

  1. 容器的持久化
  2. 容器間繼承+共享數據

卷就是目錄或文件,存在於一個或多個容器中,由docker掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System提供一些用於持續存儲或共享數據的特性:

 卷的設計目的就是數據的持久化,完全獨立於容器的生存周期,因此Docker不會在容器刪除時刪除其掛載的數據卷

特點:

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

數據卷

 

直接命令添加

1、命令

 docker run -it -v /宿主機絕對路徑目錄:/容器內目錄      鏡像名
docker run -it -v /wei:/wei centos

2、查看數據卷是否掛載成功

docker inspect df6f397beedd

3、容器和宿主機之間數據共享

4、容器停止退出后,主機修改后數據是否同步【完全同步

5、命令(帶權限)

 docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名

DockerFile添加

1、根目錄下新建mydocker文件夾並進入

2、可在Dockerfile中使用VOLUME指令來給鏡像添加一個或多個數據卷

VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]

說明:

出於可移植和分享的考慮,用-v 主機目錄:容器目錄這種方法不能夠直接在Dockerfile中實現。

由於宿主機目錄是依賴於特定宿主機的,並不能夠保證在所有的宿主機上都存在這樣的特定目錄。

3、File構建

# volume test

FROM centos

VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]

CMD echo "finished,--------success1"

CMD /bin/bash

4、build后生成鏡像

 docker build --f /root/heian -t heian/centos .

5、run容器

6、通過上述步驟,容器內的卷目錄地址已經知道對應的主機目錄地址哪??

7、主機對應默認地址

數據完全可以同步

備注

Docker掛載主機目錄Docker訪問出現cannot open directory .: Permission denied

解決辦法:在掛載目錄后多加一個--privileged=true參數即可

數據卷容器

是什么

命名的容器掛載數據卷,其它容器通過掛載這個(父容器)實現數據共享,掛載數據卷的容器,稱之為數據卷容器

總體介紹

1、以上一步新建的鏡像heian/centos為模板並運行容器dc01/dc02/dc03

2、它們已經具有容器卷

  • /dataVolumeContainer1
  • /dataVolumeContainer2

容器間傳遞共享(--volumes-from)

1、先啟動一個父容器dc01,在dataVolumeContainer2新增內容

2、dc02/dc03繼承自dc01

docker run -it --name dc02 --volumes-from dc01 zzyy/centos

dc02/dc03分別在dataVolumeContainer2各自新增內容

3、回到dc01可以看到02/03各自添加的都能共享了

4、刪除dc01,dc02修改后dc03可否訪問

5、刪除dc02后dc03可否訪問

再進一步

6、新建dc04繼承dc03后再刪除dc03

結論:容器之間配置信息的傳遞,數據卷的生命周期一直持續到沒有容器使用它為止

 


免責聲明!

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



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