Docker has a massive surface area, but your day-to-day workflow only relies on a handful of commands. here is the essential cheat sheet for running, debugging, and cleaning up.
1. Running Containers (docker run)
The docker run command is your workhorse. By combining a few key flags, you can control exactly how your container behaves.
Run in the background with a specific name:
docker run -d --name my-cache redis:7-alpine
-
-druns the container in detached mode (background). -
--namegives it a recognizable name instead of a random hash.
Expose ports securely (Localhost only):
docker run -p 127.0.0.1:8080:80 nginx:alpine
- Maps port 80 inside the container to port 8080 on your host machine, restricting access strictly to your local loopback address.
Inject Environment Variables:
# Single variable
docker run -e ENV=prod python:3.12-slim
# From a file
docker run --env-file .env python:3.12-slim
Auto-cleanup for one-off tasks:
docker run --rm python:3.12-slim python -c "print('Done!')"
-
--rmensures the container is automatically deleted from your system the moment it stops running.
2. Debugging and Interacting
Once a container is running, you need visibility into what it's doing.
Stream live logs:
docker logs -f my-cache
- The
-f(follow) flag streams the logs in real-time. UseCtrl+Cto exit.
Drop into a shell of an already running container:
docker exec -it my-cache sh
- Unlike
docker run(which creates a new container),execopens an interactive (-it) shell inside an existing one.
3. Container Lifecycle
Knowing how to stop a container properly prevents data corruption and hanging processes.
Graceful shutdown:
docker stop my-cache
- Sends a
SIGTERMsignal, giving the container time to save state and shut down cleanly.
Force shutdown (when frozen):
docker kill my-cache
- Sends an immediate
SIGKILLsignal. Use this only whenstopfails.
4. Visibility and Cleanup
Docker accumulates stopped containers and unused images fast. Keep your system clean.
List all containers (including stopped ones):
docker ps -a
Safe system cleanup:
docker system prune
- Removes stopped containers, unused networks, and "dangling" (untagged/unnamed) images.
Aggressive system cleanup:
docker system prune -a
-
Use with caution: This wipes everything that isn't currently attached to a container, including your standard tagged images (like
nginx:alpine). You will have to re-download them from Docker Hub the next time you need them.
Top comments (0)