0
0
DockerHow-ToBeginner · 3 min read

How to Use Docker Run -d for Detached Containers

Use docker run -d to start a Docker container in detached mode, which runs the container in the background and returns the container ID immediately. This lets you keep the container running without tying up your terminal.
📐

Syntax

The basic syntax of docker run -d is:

  • docker run: Command to create and start a container.
  • -d: Runs the container in detached mode (in the background).
  • [OPTIONS]: Optional flags like port mapping or environment variables.
  • IMAGE: The Docker image to run.
  • [COMMAND]: Optional command to override the default container command.
bash
docker run -d [OPTIONS] IMAGE [COMMAND]
💻

Example

This example runs an Nginx web server container in detached mode, mapping port 8080 on the host to port 80 in the container. The container runs in the background, and you get the container ID as output.

bash
docker run -d -p 8080:80 nginx
Output
e3f1c2d4a5b6c7d8e9f0a1b2c3d4e5f67890123456789abcdefabcdefabcdef
⚠️

Common Pitfalls

Common mistakes when using docker run -d include:

  • Not mapping ports when running web servers, so you cannot access the service.
  • Running containers that exit immediately because the main process finishes.
  • Forgetting to check logs with docker logs since the container runs in the background.

Example of a container that exits immediately:

bash
docker run -d alpine echo "Hello"
# This container will stop immediately because 'echo' finishes.

# Correct way to keep container running:
docker run -d alpine tail -f /dev/null
📊

Quick Reference

Here is a quick cheat sheet for docker run -d usage:

OptionDescription
-dRun container in detached mode (background)
-p hostPort:containerPortMap host port to container port
--name container_nameAssign a name to the container
-e KEY=VALUESet environment variables
--rmAutomatically remove container when it stops

Key Takeaways

Use docker run -d to run containers in the background and free your terminal.
Always map ports with -p if you want to access services inside the container.
Detached containers may exit immediately if the main process ends; use a long-running command to keep them alive.
Check container logs with docker logs [container_id] to debug detached containers.
Use --name to assign easy-to-remember names to your containers.