🔹 Container Lifecycle

CommandDescriptionWhere to Run
docker run IMAGERun a container from an image (foreground).Host terminal
docker run -d IMAGERun a container in the background.Host terminal
docker run --name NAME IMAGERun and assign a name.Host terminal
docker start CONTAINERStart a stopped container.Host terminal
docker stop CONTAINERGracefully stop a running container.Host terminal
docker restart CONTAINERRestart a container.Host terminal
docker kill CONTAINERForce stop (SIGKILL) a container.Host terminal
docker rm CONTAINERRemove a stopped container.Host terminal
docker psList running containers.Host terminal
docker ps -aList all containers.Host terminal

🔹 Images

CommandDescriptionWhere to Run
docker imagesList all images.Host terminal
docker pull IMAGE[:TAG]Download/pull image.Host terminal
docker push IMAGE[:TAG]Upload/push image to a registry.Host terminal
docker rmi IMAGERemove image.Host terminal
docker build -t NAME:TAG .Build from Dockerfile.Host terminal, inside folder with Dockerfile

🔹 Volumes & Storage

CommandDescriptionWhere to Run
docker volume lsList volumes.Host terminal
docker volume create NAMECreate a volume.Host terminal
docker volume inspect NAMEInspect volume details.Host terminal
docker volume rm NAMERemove volume.Host terminal
docker system dfShow Docker disk usage.Host terminal

🔹 Networks

CommandDescriptionWhere to Run
docker network lsList networks.Host terminal
docker network create NAMECreate a network.Host terminal
docker network inspect NAMEInspect network details.Host terminal
docker network rm NAMERemove a network.Host terminal
docker run --network=NAME IMAGERun container in specific network.Host terminal

🔹 Exec & Logs

CommandDescriptionWhere to Run
docker exec -it CONTAINER bashOpen an interactive shell in container.Host terminal → opens a shell inside container
docker logs CONTAINERShow logs.Host terminal
docker logs -f CONTAINERFollow logs (stream).Host terminal
docker top CONTAINERShow processes inside container.Host terminal
docker inspect CONTAINERShow full container configuration/metadata.Host terminal

🔹 System Cleanup

CommandDescriptionWhere to Run
docker system pruneRemove unused data (containers, networks, dangling images).Host terminal
docker system prune -aAlso remove unused images.Host terminal
docker builder pruneClean build cache.Host terminal
docker volume pruneRemove unused volumes.Host terminal

🔹 Docker Compose

CommandDescriptionWhere to Run
docker compose upStart project (foreground).Host terminal, inside project folder with docker-compose.yml
docker compose up -dStart project in background (detached).Host terminal, inside project folder
docker compose downStop and remove containers/networks.Host terminal, inside project folder
docker compose down -vAlso remove named/anonymous volumes.Host terminal, inside project folder
docker compose stopStop containers (keep them).Host terminal, inside project folder
docker compose startStart previously stopped containers.Host terminal, inside project folder
docker compose restartRestart containers.Host terminal, inside project folder
docker compose psList project containers.Host terminal, inside project folder
docker compose logs -fFollow logs of all services.Host terminal, inside project folder
docker compose logs -f SERVICEFollow logs for a single service.Host terminal, inside project folder
docker compose exec SERVICE bashOpen shell in a service container.Host terminal, inside project folder

🔹 Useful One-Liners

Danger zone

These commands can wipe large parts of your Docker setup if you’re not careful.
Double-check before running, and never do this on a host you care about without backups.

All of these run in the host terminal:

  • Stop all running containers:

    docker ps -q | xargs docker stop

- Remove all containers:
    
    ```bash
    docker ps -aq | xargs docker rm -f
    ```
    
- Remove all images:
    
    ```bash
    docker images -q | xargs docker rmi -f
    ```
    
- Remove all volumes:
    
    ```bash
    docker volume ls -q | xargs docker volume rm
    ```
    

---

⚠️ **Rule of thumb**

- If it starts with `docker …` → run it in your **host terminal** (outside containers).
    
- If it’s `docker exec -it CONTAINER bash` → you’ll land **inside the container** and then run Linux commands there.
    
- If it’s `docker compose …` → run it in the **folder that has your `docker-compose.yml`** (unless you pass `-f` to another file).
    
- Add `sudo` at the start if your Docker setup requires root.