# Docker Cheatsheet ## Security First Notes - Always run containers with least privilege: Use --user for non-root. - Scan images for vulnerabilities: Use tools like Trivy or Docker Scout. - Avoid hardcoded secrets: Use Docker secrets or environment variables securely. - Enable Docker Content Trust: `export DOCKER_CONTENT_TRUST=1` - Assume hostile environment: Validate all inputs and use secure defaults. ## Installation (Debian) ```bash sudo apt update sudo apt install docker.io sudo usermod -aG docker $USER newgrp docker ``` ## Basic Commands - Version: `docker --version` - Info: `docker info` - Login: `docker login` ## Images - List images: `docker images` or `docker image ls` - Pull image: `docker pull ` - Build image: `docker build -t .` - Remove image: `docker rmi ` - Tag image: `docker tag ` - Save image: `docker save -o ` - Load image: `docker load -i ` ## Containers - Run container: `docker run -d --name ` - Interactive run: `docker run -it /bin/bash` - List running: `docker ps` - List all: `docker ps -a` - Stop: `docker stop ` - Start: `docker start ` - Restart: `docker restart ` - Remove: `docker rm ` - Logs: `docker logs ` - Exec into: `docker exec -it bash` - Stats: `docker stats` ## Volumes - Create volume: `docker volume create ` - List volumes: `docker volume ls` - Inspect: `docker volume inspect ` - Remove: `docker volume rm ` ## Networks - List networks: `docker network ls` - Create network: `docker network create ` - Connect: `docker network connect ` - Disconnect: `docker network disconnect ` - Inspect: `docker network inspect ` ## Docker Compose - Up: `docker-compose up -d` - Down: `docker-compose down` - Build: `docker-compose build` - Logs: `docker-compose logs` - PS: `docker-compose ps` ## Cleanup - Prune containers: `docker container prune` - Prune images: `docker image prune` - Prune volumes: `docker volume prune` - Prune networks: `docker network prune` - Prune system: `docker system prune -a -f` ## Advanced/Security - Run as non-root: `docker run -u $(id -u):$(id -g) ` - Security options: `docker run --security-opt no-new-privileges ` - Limit resources: `docker run --cpus=1 --memory=512m ` - Scan for vulnerabilities: Install trivy and run `trivy image ` - Content trust: `docker trust sign ` - Use minimal base images: Prefer alpine or distroless for smaller attack surface. ## Docker Swarm - Initialize swarm: `docker swarm init` - Join worker: `docker swarm join --token :2377` - List nodes: `docker node ls` - Deploy stack: `docker stack deploy -c docker-compose.yml ` - Leave swarm: `docker swarm leave --force` This cheatsheet prioritizes security and efficiency. For critical systems, perform additional penetration testing and use tools like Docker Bench for Security. Sources: Based on https://www.docker.com/blog/docker-cheat-sheet/ and official docs."