Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Postgresql 如何从docker容器创建Postgres备份_Postgresql_Docker - Fatal编程技术网

Postgresql 如何从docker容器创建Postgres备份

Postgresql 如何从docker容器创建Postgres备份,postgresql,docker,Postgresql,Docker,我有一个运行在docker容器中的Postgres 9.5.4数据库。我正在使用,我一直在尝试从我的数据库创建备份,但到目前为止运气不佳。据我所知,我期望以下命令将dump.tar文件存储在主机的/releases/文件夹中(临时docker容器外部) docker run-i--rm--link my_postgres:postgres--volume/releases/:/tmp/postgres:latest pg_dumpall>/tmp/dump.tar 但这会引发以下错误: pg_

我有一个运行在docker容器中的Postgres 9.5.4数据库。我正在使用,我一直在尝试从我的数据库创建备份,但到目前为止运气不佳。据我所知,我期望以下命令将dump.tar文件存储在主机的/releases/文件夹中(临时docker容器外部)

docker run-i--rm--link my_postgres:postgres--volume/releases/:/tmp/postgres:latest pg_dumpall>/tmp/dump.tar
但这会引发以下错误:

pg_dumpall: could not connect to database "template1": could not connect to server: Connection refused
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

你知道哪里不对吗?

事实上我已经找到了解决办法

docker run-i--rm--link my_container:postgres-v/releases/:/tmp/postgres:latest bash-c'exec pg_dumpall-h“$postgres_PORT_5432_TCP_ADDR”-p“$postgres_PORT_5432_TCP_PORT”–U postgres>/tmp/my_backup.tar”
其中Docker参数:

  • -i用于交互式进程,如shell、bash等
  • --rm用于在备份完成后删除容器
  • --link用于将此临时容器链接到包含当前运行的Postgres数据库的my_容器
  • -v/releases/:/tmp/创建共享卷。容器中文件夹/tmp/内的内容(在本例中为my_backup.tar)将自动显示在主机中的文件夹/releases/
和bash参数:

  • pg_dumpall将PostgreSQL集群导出到脚本文件中
  • -h“$POSTGRES\u PORT\u 5432\u TCP\u ADDR”从POSTGRES变量中获取ip地址
  • -p“$POSTGRES\u PORT\u 5432\u TCP\u PORT”从POSTGRES变量中获取端口(由于与my\u容器的链接,这些变量仅在我们刚刚创建的临时容器中定义)
  • -U连接到数据库的用户名

您是如何创建postgres容器的?