Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从备份还原整个docker compose项目_Bash_Docker_Docker Compose_Backup_Restore - Fatal编程技术网

Bash 从备份还原整个docker compose项目

Bash 从备份还原整个docker compose项目,bash,docker,docker-compose,backup,restore,Bash,Docker,Docker Compose,Backup,Restore,假设使用以下脚本备份项目: 我已经用完整备份压缩了tar归档文件,有没有“一行”方法可以在干净的机器上成功恢复和运行项目?标准的“oops I lost all of my containers”Docker恢复脚本应该是 #使用docker-compose.yml获取存储库的副本 git克隆git@github.com:... #解包一个专门用于绑定的备份 #数据目录 tar xzf data-backup.tar.gz #从头开始重新创建所有容器 docker compose up-d——

假设使用以下脚本备份项目:


我已经用完整备份压缩了tar归档文件,有没有“一行”方法可以在干净的机器上成功恢复和运行项目?

标准的“oops I lost all of my containers”Docker恢复脚本应该是

#使用docker-compose.yml获取存储库的副本
git克隆git@github.com:...
#解包一个专门用于绑定的备份
#数据目录
tar xzf data-backup.tar.gz
#从头开始重新创建所有容器
docker compose up-d——构建
这需要确保应用程序中的所有数据都存储在单个Docker容器之外的某个位置。在Docker Compose设置中,这意味着使用
卷:
指令将数据存储到其他地方。典型的做法是在数据库中存储尽可能多的数据,而在非数据库容器中根本没有持久数据。如果您担心丢失整个
/var/lib/docker
树,则更愿意将装载绑定到命名卷,并使用通常用于备份相应主机目录的任何常规备份解决方案

您显示的脚本试图保留一些不需要备份的内容:

  • 如果要将数据库容器的数据目录保存在绑定装载的主机目录中,则不需要单独进行数据库级备份(尽管这样做不会造成伤害)
  • docker inspect
    是一种极低级别的诊断工具,运行它通常没有用处;你无法从中恢复任何东西
  • 您不需要
    docker保存
    图像,因为它们位于外部docker注册表(docker Hub,AWS ECR,…)中,而且您已经将它们的docker文件签入源代码管理并可以重建它们
  • 您不需要
    docker导出单个容器
    ,因为它们不保存可变数据,而且您需要以非常常规的方式销毁它们

它所做的一件事是利用合理已知的Docker内部细节来备份命名卷的内容。手动访问
/var/lib/docker
中的文件通常不是最佳做法,并且无法保证文件的实际格式。Docker文档更便于携带(但我发现绑定挂载更方便)。

不要提供稍后会更改的外部链接。试着对相关代码本身提出疑问谢谢你分享你的担忧,但是它与我的问题不符。这与最佳实践无关。备份已经按照脚本中明确规定的格式(即.tar.gz)完成。我正在寻找一个一行程序,它将提取归档的内容,在本地构建映像并运行它(无需repo克隆或连接外部Docker注册表)。