You ran docker container start because something you need is sitting there as "Exited", and you want it back without rebuilding anything. This guide gets an existing container running, proves which state it reached, and shows when attaching to its output is worth it. The examples use Docker CLI 29.8.1 from docker-ce-cli package version 5:29.8.1-1~ubuntu.24.04~noble.
Starting a container changes service state, so check the target before you run the command.
Check the client version, then list all containers, including stopped ones:
$ docker version --format '{{.Client.Version}}'
29.8.1
$ docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'
NAMES STATUS IMAGE
inventory-db Exited (0) 2 hours ago postgres:16
inventory-web Up 2 hours example/inventory:2026.09
NAMES column or use the container ID.docker container start accepts one or more, and docker start is an alias.Checkpoint: the target is the stopped container you meant to restart. Do not rely on a familiar image name: several containers can share one image, while a container name identifies one specific object.
Start the named container as an ordinary user if your account can access Docker:
$ docker container start inventory-db
inventory-db
The normal output is the container name or ID, and a successful command returns status 0. That line is not proof the application inside is healthy, so verify the state:
$ docker ps --filter 'name=^inventory-db$' --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
inventory-db Up 3 seconds
Checkpoint: a row for the intended container whose status begins with Up. The exact uptime will differ.
If the container stops immediately, inspect its logs and exit status before you start it again:
$ docker ps -a --filter 'name=^inventory-db$' --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
inventory-db Exited (1) 2 seconds ago
$ docker logs --tail 50 inventory-db
<recent application output appears here>
Tip: starting it again is not a repair for a process that exits on every launch. Keep the logs and investigate the application configuration, dependencies or data separately.
Pass multiple names or IDs when the containers are already configured and you have checked their order:
$ docker container start inventory-db inventory-cache inventory-worker
inventory-db
inventory-cache
inventory-worker
Docker processes the requested targets as one command, but this is not a dependency manager. A successful response for a name means Docker accepted the start request. It does not prove that the worker can already connect to the database or cache. Check all three afterwards:
$ docker ps --filter 'name=^inventory-' --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS
inventory-db Up 8 seconds
inventory-cache Up 8 seconds
inventory-worker Up 7 seconds
Warning: if one target is misspelled or unavailable, read the error and recheck the complete list. Do not copy a partial success into a deployment record as though every requested container started.
By default, the command starts the container without attaching your terminal. Use --attach, or -a, to connect your terminal to the container's standard output and standard error:
$ docker container start --attach inventory-worker
worker: listening on 0.0.0.0:8080
worker: ready
Attaching suits a foreground check or a short-lived job. It can also leave you staring at a long-running service, and because signals get forwarded, terminal handling matters.
--detach-keys with a sequence your Docker installation accepts.--interactive, or -i, keeps standard input attached. It matters when the process expects input. It does not allocate a terminal and does not make a non-interactive program interactive.-i by habit to a server container.docker logs --tail 50 inventory-worker shows recent output without taking over the terminal. If you only need to inspect the service, this is usually the calmer choice.Most installations permit the Docker client for users in the Docker group or through a rootless daemon. If the client reports a permission error connecting to the daemon, check the active context and daemon access without changing container state:
$ docker context show
default
$ docker info
Use sudo docker container start ... only when your host's Docker setup explicitly requires elevated access. Adding sudo changes which Docker configuration and context are used, so used reflexively it can hit the wrong daemon.
Security warning: a Docker group or socket grants substantial control over the host. Treat membership as a security decision.
To undo the state change made by this guide, stop only the container you started:
$ docker container stop inventory-db
inventory-db
That stops the container but keeps it available for another start.
Warning: do not use docker rm as a clean-up shortcut. Removing a container is a separate, potentially destructive action, and it can discard its writable layer. Do not run docker system prune while troubleshooting this command.
docker container start.docker ps showed the container Up, or its immediate exit was investigated with docker logs.--attach and --interactive were used only when the process needed terminal streams.docker container stop CONTAINER reverses the running-state change without removing the container.