Docker Survival Guide
The container commands you reach for daily — build, run, debug, clean up — plus the Dockerfile lines that actually matter.
Run & manage containers
- Run interactively
docker run -it --rm image sh—--rmdeletes it on exit- Run detached + ports
docker run -d -p 8080:80 --name web nginx(host:container)- List / all
docker ps· with stopped:docker ps -a- Logs (follow)
docker logs -f --tail 100 web- Shell into running
docker exec -it web sh(orbash)- Stop / kill / remove
docker stop web·docker rm -f web- Copy files
docker cp web:/app/log.txt .- Inspect
docker inspect web· IP/mounts/env as JSON
Images
- Build (tag)
docker build -t app:1.0 .- List / remove
docker images·docker rmi app:1.0- Tag & push
docker tag app:1.0 registry/app:1.0 && docker push registry/app:1.0- History (layers)
docker history app:1.0- Prune everything unused
docker system prune -af --volumes(careful)
Dockerfile essentials
- FROM
- Base image. Pin a tag/digest; prefer
-slim/alpine. - Layer caching
- Copy
package.json& install before copying source, so deps cache. - Multi-stage
FROM node AS build…FROM nginx+COPY --from=build— tiny final image.- CMD vs ENTRYPOINT
- ENTRYPOINT = the executable; CMD = default args. Use exec form
["node","x.js"]. - .dockerignore
- Exclude
node_modules,.git— shrinks build context. - Non-root
USER app— never ship a container running as root.
Compose
- Up / down
docker compose up -d·docker compose down -v- Rebuild one
docker compose up -d --build web- Logs / exec
docker compose logs -f web·docker compose exec web sh