前言:生產環境中使用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


