Use Docker to Backup and Restore PostgreSQL Databases
Joe Scharf
Updated
4 min read
Overview
Docker is a convenient way to gain access to applications and their utilities without having to install them on your local machine. By using Docker, you can quickly pull an image of an application and run the necessary commands within a container. When the commands are done running, everything is conveniently cleaned up, eliminating the clutter associated with a local application install.
This guide will walk you through the steps to use Docker to backup a PostgreSQL database. This approach works with databases running in a Docker container, locally hosted, or on a remote server.
This is the approach DBSnapper uses to backup and sanitize PostgreSQL database when using the pgdocker database engine. DBSnapper takes care of the details for you, so you don't have to worry about it.
The steps we will follow:
- Pull the PostgreSQL Docker image
- Backup with the
pg_dumpcommand - Restore with the
pg_restorecommand
Prerequisites
- Docker installed on your local machine
Pull the PostgreSQL Docker image
The first step is to docker pull the PostgreSQL Docker image. This will download the image from Docker Hub and make it available to run as a container on your local machine.
docker pull postgres:latest
This command pulles the latest version of the PostgreSQL image from Docker Hub. You can also specify a specific version of the image by appending the version number to the image name. For example, to pull version 15.5 of the PostgreSQL image, you would run the following command:
docker pull postgres:15.5
Backup with the pg_dump command
Once the image is downloaded, you can run the pg_dump command in the docker container to backup the database. The command below will backup the mydb database to a file named mydb.sql in the current directory. The --rm flag tells Docker to remove the container when the command is finished running.
docker run --rm -v $(pwd):/backup postgres:latest pg_dump -h <host> -U <user> -d <database> -f /backup/mydb.sql
The command above mounts the \backup directory in the container as a volume -v to the host's current directory $(pwd). This allows the pg_dump command to write the backup file to the current directory on your local machine.
See our article: How to Create a PostgreSQL Database Snapshot to learn more about the PostgreSQL
pg_dumputility.
Restoring with the pg_restore command
If you need to restore the database from the backup file, you can use the pg_restore command in the docker container. The command below will restore the mydb database from the mydb.sql file in the current directory.
docker run --rm -v $(pwd):/backup postgres:latest pg_restore -h <host> -U <user> -d <database> -f /backup/mydb.sql
See our article: How to Restore a PostgreSQL database snapshot with
pg_restoreto learn more about the PostgreSQLpg_restoreutility.
Conclusion
Using Docker to backup PostgreSQL databases is a convenient way to backup your database without having to install PostgreSQL on your local machine. This approach also works with databases running in a Docker container, locally hosted, or on a remote server.
DBSnapper simplifies database snapshot management
The DBSnapper app has the ability to use Docker images to access the PostgreSQL database utilities and simplifies creating, sanitizing, and restoring database snapshots. When combined with the DBSnapper Cloud, management of your snapshots is much easier with private cloud storage profiles and team sharing options. Install the DBSnapper Agent to get started, and Sign up for the DBSnapper Cloud today!
If you have any questions or feedback on this article, please get in touch on our contact page.