如何为postgres备份docker音量?

时间:2017-07-20 07:13:13

标签: postgresql docker docker-compose

这是我的docker撰写文件

version: '2'

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

volumes:
  data: {}

我想备份data

在码头工具中是否有命令?我使用mac作为我的本地和linux作为我的服务器

1 个答案:

答案 0 :(得分:1)

对于Docker而言,卷不是特别的。它们是简单的目录/文件,当您在compose文件中使用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

你可以通过挂载另一个容器或直接从主机操作系统来备份主机操作系统/var/lib/postgresql/data

或者还有另外一种方法,你可以在readonly模式下在另一个容器中挂载相同的卷并备份目录:

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的备份