CodeGym /Adesua ahorow /Docker SELF /備份和數據恢復

備份和數據恢復

Docker SELF
等級 19 , 課堂 3
開放

4.1 備份和恢復數據的主要方法

如果你曾經丟失過重要數據,那麼應該不用多說備份有多重要。在這節課中,我們會看看各種備份和恢復數據的方法以及工具,比如 Docker 中的 volume 和綁定目錄。

備份和恢復數據的主要方法

  1. Docker volume 的備份
  2. 使用 tar 工具進行備份
  3. 容器內部資料庫的備份
  4. 從備份中恢復數據

4.2 Docker 卷的備份

Docker 卷提供了一種在容器外儲存數據的方便方法。要備份卷,可以使用各種方式。

使用 docker run 命令備份卷的範例

創建卷的備份

創建一個掛載卷的容器,並使用 tar 工具創建數據存檔:

Terminal

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 工具提取數據:

Terminal

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 創建一個壓縮文件:

Terminal

docker exec -t my_container tar czf /backup/my_container_backup.tar.gz -C /data .

在這個例子中,容器 my_container 中的 /data 資料目錄的數據被壓縮到文件 my_container_backup.tar.gz 中。

從壓縮文件恢復數據的示例

運行容器並使用 tar 從壓縮文件中提取數據:

Terminal

docker exec -t my_container tar xzf /backup/my_container_backup.tar.gz -C /data

4.4 容器內的資料庫備份

對於資料庫,通常會使用專門的工具來進行備份和恢復。

PostgreSQL 資料庫備份範例

使用 pg_dump 工具來建立資料庫的備份:

Terminal

docker exec -t my_postgres_container pg_dump -U myuser mydb > /path/to/backup/mydb_backup.sql

在這個範例中,資料庫 mydb 被匯出到檔案 mydb_backup.sql 中。

PostgreSQL 資料庫恢復範例

使用 psql 工具從備份中恢復資料庫:

Terminal

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
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION