
When utilizing Docker, you need to use volumes to persist knowledge even once you cease or restart the containers. We’ll create and use Docker volumes for PostgreSQL.
Stipulations
To observe together with this tutorial:
- It is best to have Docker put in in your machine
- You ought to be comfy with Docker instructions and PostgreSQL
Step 1: Pull the PostgreSQL Picture
First, we pull the PostgreSQL picture from DockerHub:
Step 2: Create a Docker Quantity
Subsequent, let’s create a Docker quantity to retailer the info. This quantity will persist the info even when the container is eliminated.
$ docker quantity create pg_data
Step 3: Run the PostgreSQL Container
Now that we’ve pulled the picture and created a quantity, we are able to run the PostgreSQL container attaching the created quantity to it.
$ docker run -d
--name my_postgres
-e POSTGRES_PASSWORD=mysecretpassword
-v pg_data:/var/lib/postgresql/knowledge
-p 5432:5432
postgres
This command runs my_postgres
in indifferent mode. Utilizing –v pg_data:/var/lib/postgresql/knowledge mounts the pg_data
quantity to /var/lib/postgresql/knowledge within the container. And utilizing -p 5432:5432 maps port 5432 of my_postgres
to port 5432 on the host machine.
Step 4: Confirm the Quantity Utilization
Now that we’ve created the quantity, we are able to confirm it’s getting used. You possibly can examine the quantity and verify the contents.
$ docker quantity examine pgdata
Operating this command will present particulars concerning the quantity, together with its mount level in your host system. You possibly can navigate to this listing and see the PostgreSQL knowledge information.
[
{
"CreatedAt": "2024-08-07T15:53:23+05:30",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/pg_data/_data",
"Name": "pg_data",
"Options": null,
"Scope": "local"
}
]
Step 5: Create a Database and Desk
Hook up with the Postgres occasion and create a database and desk.
Begin a psql session:
$ docker exec -it my_postgres psql -U postgres
Create a brand new database:
Hook up with the brand new database:
Create a desk and insert some knowledge:
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
title VARCHAR(100),
e mail VARCHAR(100)
);
INSERT INTO customers (title, e mail) VALUES ('Abby', 'abby@instance.com'), ('Bob', 'bob@instance.com');
Run a pattern question:
Output:
id | title | e mail
----+------+------------------
1 | Abby | abby@instance.com
2 | Bob | bob@instance.com
Step 6: Cease and Take away the Container
Cease the operating container and take away it. We do that so we are able to take a look at that the info persists even when the container is stopped.
$ docker cease my_postgres
$ docker rm my_postgres
Step 7: Re-run the Postgres Container with the Similar Quantity
Begin a brand new PostgreSQL container with the identical quantity to make sure knowledge persistence.
$ docker run -d
--name my_postgres
-e POSTGRES_PASSWORD=mysecretpassword
-v pgdata:/var/lib/postgresql/knowledge
-p 5432:5432
postgres
Hook up with the Postgres occasion and confirm that the info persists.
Open a psql session:
$ docker exec -it my_postgres psql -U postgres
Hook up with the mydb
database:
Confirm the info within the customers
desk:
It is best to nonetheless see the output:
id | title | e mail
----+------+------------------
1 | Abby | abby@instance.com
2 | Bob | bob@instance.com
I hope this tutorial helps you perceive methods to use volumes to persists knowledge when working with Docker.
Further Assets
To study extra, learn the next sources:
Pleased exploring!
Bala Priya C is a developer and technical author from India. She likes working on the intersection of math, programming, knowledge science, and content material creation. Her areas of curiosity and experience embrace DevOps, knowledge science, and pure language processing. She enjoys studying, writing, coding, and low! Presently, she’s engaged on studying and sharing her data with the developer neighborhood by authoring tutorials, how-to guides, opinion items, and extra. Bala additionally creates participating useful resource overviews and coding tutorials.