Files
my-docs/Containerization-Orchestration/Docker/Docker-Dirs.md

3.8 KiB
Executable File
Raw Blame History

Docker Directory Structure in /var/lib/docker

In Linux, Docker stores its container data under /var/lib/docker. Each subdirectory here serves a specific purpose related to Docker's functionality. Below is a breakdown of each important directory under /var/lib/docker.

1. /var/lib/docker/containers

This directory contains the data for each Docker container. Each container has its own subdirectory, named after the container's unique ID. Inside each containers directory, youll find files like:

  • config.v2.json: Configuration data for the container.
  • hostconfig.json: Configuration related to how the container was launched.
  • log.json: The logs generated by the container.

Example:

/var/lib/docker/containers/[container_id]/config.v2.json

2. /var/lib/docker/image

This directory contains Docker images. Images are stored in subdirectories based on their storage driver (e.g., overlay2, aufs, etc.).

Key subdirectories:

  • /var/lib/docker/image/overlay2/: Stores metadata and layers for images using the overlay2 storage driver.

3. /var/lib/docker/overlay2

The overlay2 directory contains the layers of the Docker images and containers. Each image and container is made up of multiple layers, which are stored in this directory. The overlay filesystem merges these layers to create a unified view of the container's filesystem.

Key subdirectories:

  • diff/: Stores the content changes for each layer.
  • merged/: Represents the merged view of the layers for running containers.
  • work/: Temporary working directories for file operations.

4. /var/lib/docker/plugins

This directory is where Docker stores data related to plugins. Docker plugins extend the platform's capabilities by adding features such as storage drivers, networking plugins, and logging mechanisms.

Subdirectory structure:

  • /var/lib/docker/plugins/[plugin_id]/: Each installed plugin has its own subdirectory.

5. /var/lib/docker/network

This directory stores data related to Docker's networking functionality. Docker allows containers to communicate with each other through networks, and this directory holds information about those networks.

Key subdirectories:

  • files/: Contains JSON files that describe the networks.
  • local-kv.db: A database that stores network state information.

6. /var/lib/docker/swarm

This directory holds data related to Docker Swarm mode, which allows you to deploy and manage a cluster of Docker nodes. The swarm directory is used for storing cluster state, such as node configurations and services.

Key files:

  • worker/: Contains information specific to the worker nodes in a swarm.
  • raft/: Contains data for the Raft consensus algorithm used to manage the swarm cluster state.

7. /var/lib/docker/volumes

This directory contains data for Docker volumes, which are used for persisting data outside of the container lifecycle. Each volume is stored in its own subdirectory.

Example:

/var/lib/docker/volumes/[volume_name]/_data/

The _data subdirectory inside each volume contains the actual persistent data for that volume.

8. /var/lib/docker/builder

This directory stores information related to the Docker image build process. It includes cache data and temporary files generated while building Docker images.

Key files:

  • cache/: Contains cached layers used during the image building process to speed up future builds.

9. /var/lib/docker/runtimes

This directory contains data related to different container runtimes. While Docker primarily uses runc, other runtimes like nvidia can also be installed here.

10. /var/lib/docker/tmp

Temporary files used by Docker are stored in this directory. These are usually short-lived and can include things like temporary layers during builds or container creation processes.