【图文实操教程】如何备份Docker容器中的PostgreSQL数据

目录

  • 一、前言
  • 二、操作步骤
    • [1. 查看并确定目标容器](#1. 查看并确定目标容器)
    • [2. 进入容器](#2. 进入容器)
    • [3. 执行备份命令](#3. 执行备份命令)
    • [4. 退出容器并复制备份文件](#4. 退出容器并复制备份文件)

一、前言

现在docker容器很方便,可以一键部署项目,但是方便部署的同时,也给运维带来了麻烦,docker中的pgsql数据,如何进行备份呢

二、操作步骤

1. 查看并确定目标容器

使用docker ps命令查看当前运行的容器列表,找到运行PostgreSQL的容器ID或名称。通常,PostgreSQL容器可以通过其监听的端口(默认为5432)来识别

bash 复制代码
docker ps

如图,我的pgsql的镜像id是 28fe3d7203e5

2. 进入容器

使用docker exec命令进入PostgreSQL容器。这里需要以root用户身份或使用具有足够权限的用户进入,以便执行备份命令

bash 复制代码
docker exec -u root -it 容器名或容器ID /bin/bash

举例

bash 复制代码
docker exec -u root -it 28fe3d7203e5 /bin/bash

3. 执行备份命令

在容器内部,使用pg_dump命令来备份数据库

bash 复制代码
pg_dump -h localhost -p 5432 -U 用户名 -d 数据库名 > 备份文件名.sql

-h 指定数据库服务器的主机名,这里因为是Docker容器内部,所以通常是localhost。

-p 指定数据库服务器的端口,PostgreSQL默认端口是5432。

-U 指定连接数据库的用户名。

-d 指定要备份的数据库名。将备份结果重定向到文件。

举例

bash 复制代码
pg_dump -h localhost -p 5432 -U docmost -d docmost > /var/lib/postgresql/data/backup.sql
bash 复制代码
小小鱼儿小小林
原文链接:https://yujianlin.blog.csdn.net/article/details/141793124

4. 退出容器并复制备份文件

完成备份后,使用exit命令退出容器。然后,使用docker cp命令将备份文件从容器内复制到宿主机上

bash 复制代码
exit
bash 复制代码
docker cp 容器名或容器ID:/路径/backup.sql /宿主机/目标/路径/

举例

bash 复制代码
docker cp 28fe3d7203e5:/var/lib/postgresql/data/backup.sql /home/vdc/tools/docmost/docker/docmost/

注意,这里的冒号: 两边不要留空,如果留空的话就会报异常

"docker cp" requires exactly 2 arguments.

See 'docker cp --help'.

Usage: docker cp OPTIONS CONTAINER:SRC_PATH DEST_PATH|-

docker cp OPTIONS SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

正确的格式就会输出 Successfully,如图

然后,你们可以xshell登录看一下当前目录或者打开 XFTP工具看一下是否已经备份成sql文件了

相关推荐
疯狂打码的少年8 分钟前
【计算机网络】子网掩码与子网划分计算(含CIDR表示法)
服务器·笔记·计算机网络·php
cpolar技术支持11 分钟前
Docker 容器启动失败怎么查?端口、日志、权限与网络排障完整教程
linux·docker·容器·cpolar·网络排障
网硕互联的小客服1 小时前
怎样在CMD里用chkntfs /x C: 命令来取消磁盘自检?——原理与实践全解
运维·服务器·网络
布莱克6051 小时前
Linux 常用命令详解:从入门到实战
linux·运维·服务器
学习路上_write2 小时前
Linux黑马命令学习
linux·运维·服务器
那年窗外下的雪.2 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
一技安身2 小时前
【大模型】Win11 部署 DeepSeek+ RAGFlow0.27.2 (Ollama方案,断网可用)
docker·ai·语言模型
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_channel_reorder_map调用流程与实战(十八)
linux·运维·服务器·音视频进阶·gstreamer音视频进阶
新时代牛马3 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
JavaPub-rodert3 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker