compose/docs/reference/compose_down.md
Guillaume Lours f729794270 docs(hooks): document pre_start hook container retention and cleanup
- compose_down.md: note that retained pre_start hook containers (those
  kept after a hook failure for post-mortem) are automatically removed
  by compose down, with the label filter to list them beforehand.
- compose_up.md: note the retention behavior on pre_start hook failure,
  how to inspect the retained container, and that it is cleaned up on
  the next compose up or compose down.

Signed-off-by: Guillaume Lours <glours@users.noreply.github.com>
2026-08-20 18:57:02 +02:00

3.2 KiB
Raw Blame History

docker compose down

Stops containers and removes containers, networks, volumes, and images created by up.

By default, the only things removed are:

  • Containers for services defined in the Compose file.
  • Networks defined in the networks section of the Compose file.
  • The default network, if one is used.

Networks and volumes defined as external are never removed.

Anonymous volumes are not removed by default. However, as they dont have a stable name, they are not automatically mounted by a subsequent up. For data that needs to persist between updates, use explicit paths as bind mounts or named volumes.

Pre-start hook containers

When a pre_start lifecycle hook fails, Compose retains its container for post-mortem inspection instead of removing it immediately. compose down automatically removes these retained hook containers as part of teardown, so they do not accumulate over time.

To list retained hook containers before running down:

$ docker ps -a --filter label=com.docker.compose.hook=pre_start

Options

Name Type Default Description
--dry-run bool Execute command in dry run mode
--remove-orphans bool Remove containers for services not defined in the Compose file
--rmi string Remove images used by services. "local" remove only images that don't have a custom tag ("local"|"all")
-t, --timeout int 0 Specify a shutdown timeout in seconds
-v, --volumes bool Remove named volumes declared in the "volumes" section of the Compose file and anonymous volumes attached to containers

Description

Stops containers and removes containers, networks, volumes, and images created by up.

By default, the only things removed are:

  • Containers for services defined in the Compose file.
  • Networks defined in the networks section of the Compose file.
  • The default network, if one is used.

Networks and volumes defined as external are never removed.

Anonymous volumes are not removed by default. However, as they dont have a stable name, they are not automatically mounted by a subsequent up. For data that needs to persist between updates, use explicit paths as bind mounts or named volumes.

Pre-start hook containers

When a pre_start lifecycle hook fails, Compose retains its container for post-mortem inspection instead of removing it immediately. compose down automatically removes these retained hook containers as part of teardown, so they do not accumulate over time.

To list retained hook containers before running down:

$ docker ps -a --filter label=com.docker.compose.hook=pre_start