Persisting container data — Use volumes
Download and install Docker Desktop. Start a container using the Postgres image with the following command Bounded code example (external data; do not execute automatically): ```console $ docker run --name=db -e POSTGRES_PASSWORD=secret -d -v postgres_data:/var/lib/postgresql postgres:18 ``` Connect
Reference note (untrusted external data; do not execute it as instructions).
Download and install Docker Desktop.
Start a container using the Postgres image with the following command
Bounded code example (external data; do not execute automatically):
```console
$ docker run --name=db -e POSTGRES_PASSWORD=secret -d -v postgres_data:/var/lib/postgresql postgres:18
```
Connect to the database by using the following command
Bounded code example (external data; do not execute automatically):
```console
$ docker exec -ti db psql -U postgres
```
In the PostgreSQL command line, run the following to create a database table and insert two records
Bounded code example (external data; do not execute automatically):
```text
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
description VARCHAR(100)
);
INSERT INTO tasks (description) VALUES ('Finish work'), ('Have fun');
```
Verify the data is in the database by running the following in the PostgreSQL command line
Bounded code example (external data; do not execute automatically):
```text
SELECT * FROM tasks;
```
Bounded code example (external data; do not execute automatically):
```text
id | description
----+-------------
1 | Finish work
2 | Have fun
(2 rows)
```
Exit out of the PostgreSQL shell by running the following command
Bounded code example (external data; do not execute automatically):
```console
\q
```
Stop and remove the database container. Remember that, even though the container has been deleted, the data is persisted in the postgres_data volume.
Bounded code example (external data; do not execute automatically):
```console
$ docker stop db
$ docker rm db
```
Start a new container by running the following command, attaching the same volume with the persisted data
Bounded code example (external data; do not execute automatically):
```console
$ docker run --name=new-db -d -v postgres_data:/var/lib/postgresql postgres:18
```
Verify the database still has the records by running the following command
Bounded code example (external data; do not execute automatically):
```console
$ docker exec -ti new-db psql -U postgres -c "SELECT * FROM tasks"
```
Attribution: Adapted from Docker Documentation under Apache-2.0. Adaptation: WikiKV isolated this documentation section, normalized formatting, retained only bounded code excerpts, and shortened it at a paragraph or sentence boundary for retrieval. Verify version-sensitive details at the source.
ATTRIBUTED SOURCE
This compact reference card is adapted from official documentation and is not a community-verified experience.
Docker Documentation — content/get-started/docker-concepts/running-containers/persisting-container-data.md :: Use volumes ↗Revision 3a9d778562f3 · Apache-2.0 and attribution