postgresql - 如何备份PostgreSQL的docker卷?

标签 postgresql docker docker-compose

这是我的docker撰写文件

version: '2'

services:
  postgres9:
    image: postgres:9.4
    expose:
      - 5432
    volumes:
      - data:/var/lib/postgresql/data

volumes:
  data: {}

我想备份data

docker 有命令吗?我在本地使用mac并在服务器上使用linux

最佳答案

在Docker的情况下,卷没有什么特别的。它们是简单的目录/文件,当您在撰写文件中使用volumes时,docker将创建一个目录,并在运行容器时将其挂载到容器中。您可以通过以下方式看到它:

docker inspect <container name/id>

在输出中,您将找到有关卷的信息,您可以在其中看到主机操作系统上的目录

要备份卷,您只需使用tar压缩并存储目录即可。为此,您需要知道目录的路径,可以从主机操作系统挂载目录,例如:
version: '2'

services:
  postgres9:
    image: postgres:9.4
    expose:
      - 5432
    volumes:
      - /var/lib/postgresql/data:/var/lib/postgresql/data

您可以通过将其挂载到另一个容器或直接从主机OS上从主机OS备份/var/lib/postgresql/data

或有另一种方法,您可以以只读模式将相同的卷挂载到另一个容器中并备份目录:
version: '2'

services:
  postgres9:
    image: postgres:9.4
    expose:
      - 5432
    volumes:
      - data:/var/lib/postgresql/data
  backuptool:
    image: busybox:latest
    volumes:
      - data:/data:ro
volumes:
  data: {}

然后,您可以tar并从/data容器中上传backuptool的备份

关于postgresql - 如何备份PostgreSQL的docker卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207785/

相关文章:

ruby-on-rails - 涉及正则表达式数组的 postgres 查询

json - 分层 JSON 对象的 PostgreSQL 物化路径/Ltree

Docker M1 - 使用 Ubuntu + MySQL :/bin/sh errors on latest update Docker Desktop 4. 2.0

docker - 使用 docker-compose 时如何修复容器的基本名称?

postgresql - 来自别名的 SQL 累积和

sql - 将存储在 NoSQL DB 中的数据与存储在 SQL DB 中的数据相关联

Docker:为容器创建多个名称

docker 中的 Python – RuntimeError : can't start new thread

docker - 如何为 docker 容器分配更多内存

ruby-on-rails - Windows 7 上的 Docker Compose : Could not locate Gemfile or . bundle /目录