docker之數據卷管理


docker之數據卷的備份和還原

1、現在利用鏡像創建一個nginx的服務容器,並掛載一個數據卷

[root@docker ~]# docker run -v /data -d -p80:80 --name web1 centos_nginx:v4 
55a45a822c29a1e673d7ca2fb65a4d08fe6c896f5b4fa08fac4d45950e9e7f67

2、進入到容器內,向空的數據卷目錄/data添加一些數據

[root@docker ~]# docker exec -it web1 /bin/bash
[root@55a45a822c29 nginx-1.12.2]# cd /data/
[root@55a45a822c29 data]# ll
total 0
[root@55a45a822c29 data]# mkdir wadeson
[root@55a45a822c29 data]# vim wadeson/web1.text
bash: vim: command not found
[root@55a45a822c29 data]# vi wadeson/web1.text 
[root@55a45a822c29 data]# cat wadeson/web1.text 
this is in web1

3、創建另外一個容器以上面web1容器作為共享數據卷,並將共享的數據卷進行tar壓縮備份,並通過映射到本機host

[root@docker ~]# docker run -d --volumes-from web1 -v /root/backup:/backup centos tar cvf /backup/data.tar /data
081dd7df6371b86e33106664390a8a2780a1f8fc46d69b88adec2970f6d394cf

上面命令詳解:

--volumes-from web1:表示創建的容器基於web1容器內的數據卷(即兩個容器共享數據卷),web1的數據卷為/data

tar vcf /backup/data.tar  /data:創建的容器將/data進行tar壓縮

-v /root/backup:/backup :將容器內的目錄/backup與本機host的/root/backup進行映射

總的命令解釋:創建一個新容器數據卷基於共享web1容器的數據卷,將數據卷進行tar壓縮到容器內某個目錄,並映射到本機host的目錄

[root@docker ~]# ll backup/data.tar 
-rw-r--r--. 1 root root 10240 Nov  2 22:24 backup/data.tar
[root@docker ~]# cd backup/
[root@docker backup]# ll
total 12
-rw-r--r--. 1 root root 10240 Nov  2 22:24 data.tar
[root@docker backup]# tar xf data.tar 
[root@docker backup]# cd data
[root@docker data]# ll
total 0
drwxr-xr-x. 2 root root 23 Nov  2 22:13 wadeson
[root@docker data]# cat wadeson/web1.text 
this is in web1

而此次創建的容器的狀態為exited也不會影響數據卷的備份:

於是基於數據卷的備份就ok了

 

現在將備份好的數據進行恢復還原:

1、創建一個空數據卷的容器web2:(創建的數據卷目錄名稱必須和備份的數據卷名稱一致)

[root@docker ~]# docker run -it -v /data --name web2 centos /bin/bash
[root@090eb911d368 /]# ll /data0/
total 0

2、創建一個容器與web2共享數據卷,將備份的數據解壓到數據卷/data中:

[root@docker ~]# docker run --volumes-from web2 -v /root/backup:/backup centos tar xvf /backup/data.tar
data/
data/wadeson/
data/wadeson/web1.text

啟動的新容器與web2容器共享數據卷目錄/data,而本機host將/root/backup下面的數據壓縮文件映射到了新容器的/backup目錄下,並執行了命令將數據壓縮文件解壓到了數據卷/data中

如果沒有--volumes-from web2那么將不會有數據卷目錄/data

3、創建一個新容器共享數據卷,查看數據內容:

[root@docker ~]# docker run -it --volumes-from web2 --name web3 centos sh -c "ls -l /data/wadeson" 
total 4
-rw-r--r--. 1 root root 16 Nov  3 02:13 web1.text

 


免責聲明!

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



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