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