kai wen ng

To avoid bloated Docker images and containers, it is a best practice to store persistent data outside the container's writable layer by using storage mounts.
Mounting allows a Docker container to access files from external storage locations. Depending on the mount type, the container can read, write, and sometimes execute files without storing them inside the container image.
Docker provides three main types of mounts:

1. Docker Volume Mounts

Docker volumes are the recommended method for storing persistent application data.
Volumes are managed directly by Docker and are independent of the container lifecycle. They can be listed using:

docker volume ls

Enter fullscreen mode Exit fullscreen mode

A volume can be attached to multiple containers, allowing containers to share persistent data without recreating or copying data between containers.
Example:

docker run -v my_volume:/data my_container

Enter fullscreen mode Exit fullscreen mode

Advantages:

  • Managed by Docker
  • Portable across containers
  • Survives container removal
  • Better isolation compared to directly mounting host directories

2. Bind Mounts (Host File System Mounts)

A bind mount maps a directory or file from the host machine directly into the container.
Example:

docker run -v /host/directory:/mnt my_container

Enter fullscreen mode Exit fullscreen mode

The container can directly access the host directory through /mnt.

Advantages:

  • Allows direct access to host files
  • Useful for development environments
  • Enables live code updates without rebuilding images

Common use cases:

  • Mounting source code during development
  • Sharing configuration files
  • Accessing hardware devices or system resources

3. tmpfs Mounts (Linux Only)

tmpfs mounts store data directly in the host machine's RAM instead of disk storage.
Example:

docker run --tmpfs /tmp my_container

Enter fullscreen mode Exit fullscreen mode

Since the data exists only in memory:

  • No data is written to the Docker writable layer
  • Data disappears when the container stops
  • Disk persistence is not possible

This makes tmpfs suitable for temporary or sensitive data, such as:

  • Credentials
  • Temporary files
  • Runtime secrets
  • Cryptographic keys

Advantages:

  • Faster access due to RAM storage
  • Reduces disk writes
  • Prevents sensitive data from being stored permanently

Limitations:

  • Available mainly on Linux systems
  • Data is lost after container termination
  • Limited by available memory

Using the appropriate mount type helps keep Docker images lightweight, improves data management, and provides better control over persistence and security.