Ora

How Do You Stop Containers?

Published in Container Management 4 mins read

To stop a running container, you primarily use the docker stop command, which initiates a graceful shutdown process for your containerized applications.

Understanding the Container Shutdown Process

Stopping a container is a fundamental operation in container management, often necessary for maintenance, updates, or to free up system resources. When you issue a stop command, Docker sends a signal to the main process running inside the container, giving it a chance to save its state and shut down cleanly.

The docker stop Command

The most common and recommended way to stop a running container is by using the docker stop command. This command sends a SIGTERM signal to the container's main process, followed by a SIGKILL after a default timeout (typically 10 seconds), if the container hasn't stopped yet.

Syntax:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

To stop a container, you must provide either its unique container ID or its container name.

Steps to Stop a Running Container

Follow these steps to effectively stop one or more Docker containers:

  1. Identify Running Containers:
    First, you need to know which containers are currently running and their respective IDs or names. You can list all active containers using the docker ps command:

    docker ps

    This command will output a table showing details like CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, and NAMES.

    Example Output:

    CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS      NAMES
    a1b2c3d4e5f6   nginx:latest   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   80/tcp     my-nginx-container
    f9e8d7c6b5a4   ubuntu:latest  "bash"                   5 minutes ago   Up 5 minutes              my-ubuntu-shell

    From this output, you can identify the CONTAINER ID (e.g., a1b2c3d4e5f6) or NAMES (e.g., my-nginx-container).

  2. Stop the Container:
    Once you have the container ID or name, execute the docker stop command.

    Using Container Name:

    docker stop my-nginx-container

    Using Container ID (partial ID is often sufficient if unique):

    docker stop a1b2c3d4e5f6

    Docker will then attempt to gracefully shut down the specified container.

  3. Verify the Container is Stopped:
    After executing the docker stop command, it's good practice to verify that the container is no longer running. Run docker ps again:

    docker ps

    The stopped container should no longer appear in the output of docker ps. To see all containers, including stopped ones, you can use docker ps -a.

    Example docker ps output after stopping:

    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

    (If my-nginx-container was the only running container)

Advanced Container Stopping Scenarios

While docker stop is the primary method, other commands and considerations can be useful.

Forcefully Stopping a Container with docker kill

If a container fails to stop gracefully within the default timeout period, or if you need to stop it immediately without any delay, you can use docker kill. This command sends a SIGKILL signal directly to the container's main process, terminating it instantly without allowing it to clean up.

Syntax:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

Example:

docker kill my-nginx-container

Note: Use docker kill with caution, as it can lead to data corruption if the application inside the container isn't designed to handle abrupt termination.

Stopping Multiple Containers

You can stop several containers simultaneously by listing their names or IDs:

docker stop container-name-1 container-id-2 another-container

To stop all running containers, you can combine docker stop with docker ps -q (which lists only container IDs):

docker stop $(docker ps -q)

Removing Stopped Containers

Stopping a container doesn't delete it; it merely changes its state from Up to Exited. If you want to remove a container completely, you use the docker rm command after it has been stopped.

Example:

docker rm my-nginx-container

You can force-remove a running container (which implicitly stops it first) using docker rm -f.

docker stop vs. docker kill Comparison

Understanding the difference between stopping and killing a container is crucial for proper container management.

Feature docker stop docker kill
Signal Sent SIGTERM (graceful shutdown), then SIGKILL (after timeout) SIGKILL (immediate termination)
Behavior Allows container to clean up, save state Forces immediate exit
Timeout Has a default timeout (e.g., 10 seconds) No timeout, immediate action
Use Case Regular shutdown, application updates Unresponsive containers, urgent termination
Risk Low risk of data corruption Higher risk of data corruption or inconsistent state

For most scenarios, docker stop is the preferred method as it ensures a graceful and controlled shutdown.

For further reading and detailed options, refer to the official Docker documentation on docker stop and Docker documentation on docker kill.