TL;DR: A container with that name already exists. Either remove the old one (`docker rm web`) or start the new one with a different `--name`. Stopped containers keep their names, which surprises people who thought `docker stop` freed it.

## The error

```text
Conflict. The container name "/web" is already in use by container "abc123def456". You have to remove (or rename) that container to be able to reuse that name.
```

## Fix it

1. See the existing container:
   `docker ps -a --filter "name=web"`
   Expected: the old container, running or exited.
2. If you do not need it:
   `docker rm web`
   Expected: no output.
3. Or rename instead of deleting:
   `docker rename web web-old`
4. Re-run your original `docker run --name web ...`.

## When this applies
- Re-running a `docker run --name` command after the first container exited
- Scripts that do not use `--rm`

## When this does NOT apply
- Port conflicts (different error, different fix)
- "is already in use by a network" style volume/network errors

## Versions
All Docker versions.

## Why it happens
Container names must be unique across all containers, including stopped ones. `docker stop` only stops the process; the container object (and its name) persists until `docker rm`.

## Edge cases
- Add `--rm` to `docker run` in scripts and one-off commands so names free themselves on exit.
- A container stuck in "Removal In Progress" holds the name; restart the daemon to clear it.
- `docker compose` manages names itself; this error with compose usually means a stale project, fixed by `docker compose down`.
