4.1 備份和恢復數據的主要方法
如果你曾經丟失過重要數據,那麼應該不用多說備份有多重要。在這節課中,我們會看看各種備份和恢復數據的方法以及工具,比如 Docker 中的 volume 和綁定目錄。
備份和恢復數據的主要方法
- Docker volume 的備份
- 使用 tar 工具進行備份
- 容器內部資料庫的備份
- 從備份中恢復數據
4.2 Docker 卷的備份
Docker 卷提供了一種在容器外儲存數據的方便方法。要備份卷,可以使用各種方式。
使用 docker run 命令備份卷的範例
創建卷的備份
創建一個掛載卷的容器,並使用 tar 工具創建數據存檔:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar czf
/backup/my_volume_backup.tar.gz -C /data .
在這個範例中,卷 my_volume
的內容被打包到一個檔案 my_volume_backup.tar.gz
中,並儲存在主機的目錄 /path/to/backup
中。
從備份中恢復卷的範例
將數據恢復到卷中
創建一個掛載卷和備份目錄的容器,並使用 tar
工具提取數據:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /data
在這個範例中,檔案 my_volume_backup.tar.gz
中的數據被提取到卷 my_volume
中。
4.3 使用工具 tar
進行備份
工具 tar
是一個強大的工具,用於創建備份和恢復數據。它可以在容器內部以及主機系統上使用。
在容器內創建數據備份的示例
運行包含所需數據的容器,並使用 tar
創建一個壓縮文件:
docker exec -t my_container tar czf /backup/my_container_backup.tar.gz -C /data .
在這個例子中,容器 my_container
中的 /data
資料目錄的數據被壓縮到文件 my_container_backup.tar.gz
中。
從壓縮文件恢復數據的示例
運行容器並使用 tar 從壓縮文件中提取數據:
docker exec -t my_container tar xzf /backup/my_container_backup.tar.gz -C /data
4.4 容器內的資料庫備份
對於資料庫,通常會使用專門的工具來進行備份和恢復。
PostgreSQL 資料庫備份範例
使用 pg_dump
工具來建立資料庫的備份:
docker exec -t my_postgres_container pg_dump -U myuser mydb > /path/to/backup/mydb_backup.sql
在這個範例中,資料庫 mydb
被匯出到檔案 mydb_backup.sql
中。
PostgreSQL 資料庫恢復範例
使用 psql
工具從備份中恢復資料庫:
cat /path/to/backup/mydb_backup.sql | docker exec -i my_postgres_container psql -U myuser mydb
4.5 從備份中還原數據
數據還原就是從之前建立的備份中提取數據的過程。
從卷的備份中還原數據的示例
用 docker run
命令將數據提取到卷中:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /data
還原 MySQL 數據庫的示例
使用 mysqldump
工具創建數據庫備份:
docker exec my_mysql_container mysqldump -u myuser -p mypassword mydb >
/path/to/backup/mydb_backup.sql
使用 mysql 工具還原數據庫:
cat /path/to/backup/mydb_backup.sql | docker exec -i my_mysql_container mysql -u myuser -p
mypassword mydb
GO TO FULL VERSION