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