CodeGym /课程 /Docker SELF /备份和数据恢复

备份和数据恢复

Docker SELF
第 19 级 , 课程 3
可用

4.1 备份和数据恢复的主要方法

如果你曾经丢失过重要数据,就不用解释备份的重要性了。在这节课里,我们会讲解一些在Docker中备份和恢复数据的方法和工具,包括volumes和bind mounts的使用。

备份和数据恢复的主要方法

  1. Docker volumes的备份
  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提取卷中的数据:

Terminal

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 创建数据库备份:

Terminal

docker exec my_mysql_container mysqldump -u myuser -p mypassword mydb >
/path/to/backup/mydb_backup.sql

使用工具 mysql 恢复数据库:

Terminal

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