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