DEV Community

Manoj Kumar Patra
Manoj Kumar Patra

Posted on

3 1

Docker Cheat Sheet - Container Lifetime and Persistent Data

Containers are immutable. We can only re-deploy containers but not change existing ones. This helps in retaining history changes.

Persisting data across containers

There are two options:

  1. Bind mounts
  2. Volumes
Bind mount Volume
When we use a bind mount, a file or directory on the host machine is mounted into a container. This file or directory is referenced by its absolute path on the host machine. When we use a volume, a new directory is created within Docker's storage directory on the host machine and it's contents are completely managed by Docker.
Volumes need manual deletion. They can't be cleaned up just by removing a container

Prune

To cleanup unused volumes:

docker volume prune
Enter fullscreen mode Exit fullscreen mode

List all volumes

docker volume ls
Enter fullscreen mode Exit fullscreen mode

Create a named volume

We can have a named volume with the -v flag.

docker container run -d --name mysql-container -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v <volume_name>:/var/lib/mysql mysql
Enter fullscreen mode Exit fullscreen mode

The -v command allows us to do the following:

  1. Create a new volume for a container
  2. Create a named volume

For bind mounts, instead of volume_name, we specify the absolute path of the file or folder in the host in the above command.

docker container run -d --name mysql-container -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v /<absolute_path_on_host>:/var/lib/mysql mysql
Enter fullscreen mode Exit fullscreen mode

Creating docker volumes manually

We can create docker volumes manually using docker volume create.

This is required when we want to use custom drivers and labels.

NOTE: We need to do this before docker run.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more