1. 程式人生 > >docker定義資料卷及資料卷的備份恢復

docker定義資料卷及資料卷的備份恢復

前言:生產環境中使用docker時,往往需要對資料進行持久化(只有把容器匯出為映象,才能夠儲存寫的資料,否則容器刪除或者停止,所有資料都會沒有),或者需要在多個容器之間進行資料共享,這必然涉及容器的資料管理操作

容器中管理資料主要有兩種方式:
1、資料卷:容器內資料直接對映到本地主機環境
2、資料卷容器:使用特定容器維護資料卷。能在容器和主機、容器和容器之間共享資料,並實現資料的備份和恢復。

本部落格主要圍繞資料卷容器進行開展~~~

 

一、定義資料卷容器

搭建一個專門的資料卷容器,然後其他容器直接掛載該資料卷,實現多個容器之間共享資料(類似NFS)

1、docker images 檢視現有的映象

 

2、用映象 install_net,建立資料卷容器 windysai

docker run -itd -v  /data/docker/  --name  windysai  install_net  bash

(1)-v /data/docker/  :容器裡面

(2)windysai 名字任意

3、進入windysai容器

docker exec -it windysai bash

——》會發現容器裡面多了一個 /data/docker 的目錄

 

4、用 centos-6-x86_64 掛載windysai資料卷

docker run -itd --volumes-from windysai centos-6-x86_64 bash

(1)進去容器:docker exec -it dfdbe7e8b64 bash

發現存在資料卷容器的目錄   /data/docker

(2)測試

mkdir  /data/docker/test;  touch /data/docker/ljy.txt

 

5、重新進入windysai 容器裡

ls  /data/docker 有 test 目錄和檔案 ljy.txt

 

、資料卷備份

(畫了個圖才比較好理解 = =)

如果做了資料卷(容器內資料直接對映到本地主機環境),那就沒必要做資料卷的備份,只要定時備份伺服器硬碟的資料就行

如果沒有做對映 ——》做資料卷的備份

【1】備份

思路:

使用上面的windysai資料卷新開一個容器,同時把本地的 /vol_data_backup/ 目錄掛載到該容器的 /backup 下,這樣在容器中 /backup 目錄裡面新建的檔案,就可以直接在/vol_data_backup/  目錄中看到了;最後再把 /data/ 目錄下面的檔案打包成 data.tar,放到 /backupx 下面

1、在宿主機的磁碟上,建立要備份資料的目錄

 mkdir  /vol_data_backup

 

2、新建容器,掛在資料卷(共享資料卷 windysai 的/data/docker 目錄)

docker run -itd --volumes-from windysai -v /vol_data_backup/:/backup centos-6-x86_64 bash

(1)centos-6-x86_64:新容器

(2)/backup:對映到容器裡面的目錄

 

3、docker exec -it 2b6960b5 bash

(1)看到 /backup 為空

(2)/data/docker 存在資料卷分享出來的目錄,也就是我們要備份的目錄

 

 (3)備份

 tar -cvf  /backup/data.tar  /data/docker/

 

4、退出容器exit,檢視宿主機目錄

 

三、資料卷恢復

思路:先新建一個數據卷容器,再建一個新的容器餅掛載該資料卷容器,然後再把 tar 包解包

 1、新建第二個資料卷容器

docker run -itd -v  /data/docker/  --name  second install_net  bash

2、掛載資料卷,新建容器

docker run -itd --volumes-from second -v /vol_data_backup/:/backup install_net 

 

 3、進入容器

docker  exec -it da94996d1  bash,  ls /bacukup/

 

 4、在根目錄下解壓

cd /

tar xvf /backup/data_20190110.tar