Home / Alt manpages / docker-container-unpause(1)

  • docker-container-unpause(1)
  • User command
  • linux

Resume Paused Docker Containers with docker container unpause

Someone froze a container with docker container pause, and now it is your job to thaw it without breaking anything. This guide gives you a repeatable way to resume every process in one or more paused containers, then check that each one is back in the running state. The examples use Docker CLI 29.8.1 from docker-ce-cli 5:29.8.1-1~ubuntu.24.04~noble.

  • Time: about ten minutes.
  • You need: a Docker daemon, permission to access its socket, and at least one container that is currently paused.
  • What it will not do: restart the container or recreate it.

Warning

This command changes live workload state. Do it in a maintenance window, or after confirming that resuming the workload is safe.

1. Check the installed command

Confirm the client version and the exact command shape first. These are ordinary, read-only checks and normally need no elevated privileges:

$ docker --version
Docker version 29.8.1, build 4a63305
$ docker container unpause --help
Usage:  docker container unpause CONTAINER [CONTAINER...]

Unpause all processes within one or more containers

The command takes one or more container names or IDs. The short alias docker unpause is also available, but the full docker container unpause form makes the object being changed clear in scripts and runbooks.

Checkpoint

If the help output does not show this command, stop and check which Docker CLI is first in your PATH. Do not install another client just to make a copied example work.

2. Find the paused container

List paused containers without changing them. The daemon handles the filter, so you need a daemon connection and suitable socket permission:

$ docker container ls --filter status=paused
CONTAINER ID   IMAGE        COMMAND               CREATED        STATUS                  PORTS     NAMES
abc123def456   example/app  "/usr/local/bin/app"  2 hours ago    Up 2 hours (Paused)               reporting-app

Your columns and values will differ. Use the value in the NAMES column or the full container ID in the next step.

Tip

If the list is empty, there is nothing for unpause to resume. A stopped or exited container is not a paused container, and unpause will not start it.

Security warning

If the command reports a permission error, first check that your account is allowed to access Docker. Adding yourself to the docker group grants broad control over the host, so treat that as a security-sensitive administrator decision. Using sudo may select a different Docker context or configuration, so do not use it reflexively.

3. Confirm the target before resuming it

Inspect the container's status using its exact name or ID. This is another read-only check:

$ CONTAINER_NAME='reporting-app'
$ docker container inspect --format '{{.State.Status}}' "$CONTAINER_NAME"
paused

Replace reporting-app with the value you found. If the result is not paused, stop. A container that has already resumed may need no action, while a stopped container needs a different operational decision.

Warning

Do not paste an untrusted value into an unquoted shell command. The quotes around "$CONTAINER_NAME" keep whitespace and shell metacharacters from changing how the command is parsed.

4. Resume one container

When the target and timing are confirmed, run the state-changing command:

$ docker container unpause "$CONTAINER_NAME"

Use the command's exit status as the first check, not any text it prints. The local command un-suspends all processes in the selected container. On Linux, Docker implements this through the freezer cgroup.

Tip

Resuming is not a restart. Existing processes continue from their paused state, and the container's filesystem, process IDs and network configuration are not recreated. Workloads may immediately consume CPU, handle queued timers or accept traffic again, so watch the service if the pause was part of an incident response.

5. Verify the resulting state

Ask Docker for the state after the command returns:

$ docker container inspect --format '{{.State.Status}}' "$CONTAINER_NAME"
running

Checkpoint

running is the expected state for a successfully resumed container.

  • Still paused? Check the command's exit status and Docker daemon logs before repeating it.
  • Container does not exist? Re-list containers and confirm the name or ID. Names can be reused after a container is removed, so do not act on a stale runbook value.

For several targets, verify each one explicitly:

$ for container in reporting-app worker-app; do
>   printf '%s: ' "$container"
>   docker container inspect --format '{{.State.Status}}' "$container"
> done
reporting-app: running
worker-app: running

A successful command for one container does not prove that every name in a multi-container request was valid. Check the complete set when the operation matters.

6. Resume several containers in one request

Once you have reviewed all targets, pass them as separate arguments:

$ docker container unpause reporting-app worker-app

Do not turn a list of names into one comma-separated argument. Use shell quoting for names that contain whitespace, although simple names are normally easier to audit. If one target is wrong, correct the target list and verify every container afterwards rather than assuming the whole request had the desired result.

7. Recover if resuming was premature

There is no undo option on unpause, because it changes the live process state and then returns. If you resumed the wrong container and it is safe to pause it again, the matching command is:

$ docker container pause "$CONTAINER_NAME"
$ docker container inspect --format '{{.State.Status}}' "$CONTAINER_NAME"
paused

Warning

Pausing is also service-disrupting. It freezes processes rather than shutting them down, so use it only after checking the operational impact. If the container was supposed to remain running, do not blindly pause it as a reversal. Investigate the workload, notify the owner if required, and leave the container in the state your recovery plan specifies.

Common traps

  • No paused containers. docker container ls --filter status=paused returns no rows. There is no unpause work to do.
  • Unknown container. The name or ID is wrong, or the container was removed. Re-list containers in the active Docker context.
  • Permission denied. The current account cannot access the Docker socket. Resolve access through your normal administrator process, because elevated access is not automatically harmless.
  • Wrong context or daemon. Docker CLI configuration can point at a different daemon. Check the context and endpoint before changing a similarly named container elsewhere.
  • Still paused after the request. Capture the exit status and daemon-side diagnostics. Repeating a state change without knowing which daemon answered can make incident timelines harder to reconstruct.

Done means

  • Command checked. The Docker CLI version and command syntax were confirmed.
  • Targets confirmed. Every target was found and shown as paused before the change.
  • Reviewed request. docker container unpause was run with separate, reviewed names or IDs.
  • State verified. Each target was inspected afterwards and reported running.
  • Reversal known. You know how to pause a mistakenly resumed container, with the service impact understood.