在docker中,可以利用數據卷容器對其中的數據捲進行備份,恢復,以實現數據的遷移。
1.備份
docker run --volumes-from dbdata -v $(pwd):/backup --name worker1 centos tar cvf /backup/backup.tar /dbdata
tar: Removing leading `/' from member names
/dbdata/
/dbdata/test
這個命令的含義是:首先利用centos鏡像創建了一個容器worker1。使用--volumes-from dbdata參數讓worker容器掛載dbdata容器的數據卷(即dbdata數據卷);使用 -v $(pwd):/backup參數來掛載本地的當前目錄到worker容器的/backup目錄。
worker 容器啓動後,使用tar cvf /backup/backup.tar /dbdata命令將/dbdata 下內容備份爲容器內的/backup/backup.tar, 即宿主機當前目錄下的backup.tar。
2.恢復
如果要將數據恢復到一個容器,首先創建一個帶有數據卷的容器dbdata2
[root@localhost ~]# docker run -v /dbdata --name dbdata2 centos /bin/bash
然後創建另一個新的容器,掛載dbdata2的容器,並使用tar 解壓備份文件到所掛載的容器卷中:
[root@localhost ~]# docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
90e01955edcd: Pull complete
Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812
Status: Downloaded newer image for busybox:latest
dbdata/
dbdata/test