> ## Documentation Index
> Fetch the complete documentation index at: https://felimet-hub.jmcores.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker Core Concepts and Two Interfaces

> Docker's three core concepts, Image, Container, and Volume, plus how the Desktop GUI relates to the docker CLI.

`Docker` `Concepts`

After installing Docker (see [Install](/en/notes/docker/install-windows/)), get the skeleton concepts and the two interfaces straight first, so the commands, settings, and Compose that follow do not feel fragmented.

## The Desktop app and the CLI are one engine

The Docker Desktop GUI and the `docker` command in your terminal drive the **same Docker engine**, just two interfaces:

| Interface          | Best for                                                                                       |
| ------------------ | ---------------------------------------------------------------------------------------------- |
| Docker Desktop GUI | Quickly checking container state, changing settings, toggling services, viewing resource usage |
| `docker` CLI       | Reproducible, scriptable, composable operations                                                |

Under the WSL 2 backend, running `docker` from the **WSL Linux terminal** is best: the filesystem and engine both live on the Linux side, with one less cross-OS layer (expanded in [Where data lives](/en/notes/docker/guide/storage/) and [Performance settings](/en/notes/docker/guide/config/)).

## The three core concepts

Image, Container, and Volume are Docker's skeleton; get their purpose straight:

<Tabs>
  <Tab title="Image">
    A read-only template that packs in the app's code, runtime, libraries, and config.

    * Think of it as an install disc: it does not run by itself, it is the blueprint you open containers from.
    * Built layer by layer by a [Dockerfile](/en/notes/docker/dockerfile/basics/), or pulled from [Docker Hub](/en/notes/docker/guide/hub/).
    * An image is a stack of read-only layers; identical layers are shared across images, saving disk and speeding downloads.
  </Tab>

  <Tab title="Container">
    A running instance of an image.

    * You can open many containers from the same image, each isolated, each started, stopped, and deleted on its own.
    * Think of it as the system actually running after installing from the disc.
    * A container adds a **writable layer** on top of the read-only image layers; what you write lives there and dies with the container, so `docker rm` wipes it (see [Where data lives](/en/notes/docker/guide/storage/)).
  </Tab>

  <Tab title="Volume">
    Docker-managed persistent storage that lives outside the container.

    * Delete the container and the volume remains, so data you must keep (databases, user uploads) goes here.
    * It solves exactly the writable layer's "delete the container and the data is gone" problem.
    * Besides volumes, there are bind mounts and tmpfs; the differences, and where data goes with no mount, are in [Where data lives](/en/notes/docker/guide/storage/).
  </Tab>
</Tabs>

A **Dockerfile** builds an **Image**, you open a **Container** from the image to run it, and data you need to keep is mounted to a **Volume**.

## Next

* [Docker CLI commands](/en/notes/docker/guide/cli/): what you use day to day.
* [Docker Hub](/en/notes/docker/guide/hub/): where images come from and how to trust them.
* [Performance settings](/en/notes/docker/guide/config/): resource allocation on the WSL 2 backend.
* [Where data lives](/en/notes/docker/guide/storage/): volume, bind mount, tmpfs, and no mount.
* [Docker Compose](/en/notes/docker/guide/compose/): wiring multiple containers into one app.
