Docker教程小白實操入門(21)--如何備份、恢復資料卷
一、需求
如何備份、恢復資料卷
二、備份一個資料卷
1. 建立一個容器dbcontainer1和資料卷db1
# 建立一個容器dbcontainer1,並建立了一個名為db1的資料卷,將資料卷掛在到容器的/dbdate目錄
docker run -v db1:/dbdate --name dbcontainer1 ubuntu
2. 進入一個空白目錄,建立一個新容器,新容器與dbcontainer1
容器共享dbdata
掛載目錄
# 使用--volumes-from建立一個新容器,新容器與container1容器共享dbdata掛載目錄,同時把主機上的當前目錄掛載到容器的/backup目錄
docker run --volumes-from dbcontainer1 -v $(pwd):/backup ubuntu tar -cvf /backup/backup.tar /dbdata
容器啟動後,使用了tar
命令來將 dbdata
目錄壓縮,並儲存在 /backup/backup.tar
檔案中。
由於主機的當前目錄掛載在容器的/backup
目錄下,而繫結掛載的兩個目錄的內容完全保持一致,所以相當於將dbcontainer1
資料卷的內容壓縮後備份到了宿主機的當前目錄了 。
三、恢復一個資料卷
假設一不小心名為db1
的資料卷給刪除掉了,可以這麼恢復:
1. 首先建立一個帶有空資料卷的容器dbcontainer2
,掛載目錄為/dbdata
,資料卷名為db1
docker run -v db1:/dbdata --name dbcontainer2 ubuntu /bin/bash
2. 進入之前儲存backup.tar
的宿主機目錄,在該目錄下執行下面命令
docker run --volumes-from dbcontainer2 -v $(pwd):/backup busybox tar -xvzf /backup/backup.tar -C /dbdata
該命令建立一個新容器,新容器與dbcontainer2
容器共享dbdata
掛載目錄,同時將主機的當前目錄掛載的容器的/backup
中。
啟動容器時,使用tar
命令將資料卷的備份檔案backup.tar
解壓到/dbdata
目錄,由於該容器與dbcontainer2
容器共享一個資料卷,也就相當於將backup.tar
解壓到了dbcontainer2
的/dbdata
目錄。
又因為dbcontainer2
將名為db1
的資料卷掛載到了/dbdata
上,所以實質上就將db1
的資料卷內容完全恢復了!
四、例項
#!/bin/bash
#拉取ubutun 最新映象,實際生產中,docker pull 這一步可以省略,docker run的時候會自己去拉取。
docker pull ubuntu
# 建立一個vo1的資料卷,並在資料卷中新增1.txt檔案
docker run --name vocontainer1 -v vo1:/dir1 ubuntu touch /dir1/1.txt
#1.將vo1資料卷的資料備份到宿主機的/newback中,將容器的/backup路徑掛載上去,並將容器內/dir1資料夾打包至/backup/backup.tar
#********** Begin *********#
docker run --volumes-from vocontainer1 -v /newback:/backup ubuntu tar -cvf /backup/backup.tar /dir1
#********** End **********#
#刪除所有的容器以及它使用的資料卷
docker rm -vf $(docker ps -aq)
docker volume rm vo1
#再次建立一個vo1的資料卷
docker run -itd --name vocontainer2 -v vo1:/dir1 ubuntu /bin/bash
#2.將儲存在宿主機中備份檔案的資料恢復到vocontainer2的/中
#********** Begin *********#
docker run --volumes-from vocontainer2 -v /newback:/backup ubuntu tar -xvf /backup/backup.tar -C /
#********** End **********#
相關文章
- Docker Swarm 進階:資料卷備份與恢復DockerSwarm
- MySQL備份與恢復——實操MySql
- docker mysql8.0 啟動,掛資料卷,定時備份,恢復~DockerMySql
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- 《MySQL 入門教程》第 06 篇 備份與恢復MySql
- 【備份恢復】從備份恢復資料庫資料庫
- 入門MySQL——備份與恢復MySql
- 《入門MySQL—備份與恢復》MySql
- rman備份恢復-rman入門
- Oracle備份與恢復入門Oracle
- MySQL入門--備份與恢復(一)MySql
- MySQL入門--備份與恢復(二)MySql
- MySQL入門--備份與恢復(三)MySql
- 【備份恢復】資料恢復指導資料恢復
- 如何恢復Hyper Backup備份的資料
- 備份與恢復:polardb資料庫備份與恢復資料庫
- Grafana 備份恢復教程Grafana
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- docker 中 MySQL 備份及恢復DockerMySql
- 【備份恢復】無備份線上恢復非關鍵資料檔案
- Mysql資料備份與恢復MySql
- 利用docker-compose恢復gitlab備份的資料DockerGitlab
- 求助:hibernate如何實現資料庫備份與恢復啊?資料庫
- 備份與恢復--從備份的歸檔日誌中恢復資料
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- Xtrabackup2.4.8備份、還原、恢復Mysql5.7.19實操MySql
- 資料庫資料的恢復和備份資料庫
- 達夢資料庫備份恢復資料庫
- postgresql備份與恢復資料庫SQL資料庫
- 磁碟資料恢復及備份工具資料恢復
- mongo資料庫備份與恢復Go資料庫
- Redis的資料備份與恢復Redis
- Oracle備份恢復五(資料泵)Oracle
- 資料庫的備份與恢復資料庫
- Informix資料庫備份與恢復ORM資料庫
- 備份和恢復postgreSQL資料庫SQL資料庫
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- 【備份恢復】RMAN catalog 恢復目錄資料庫資料庫