9.Docker Commands

🐳 Docker Master Command Reference

🔹 1. System & Info

docker --version              # Docker version
docker info                   # Host + engine info
docker ps                     # Running containers
docker ps -a                  # All containers
docker inspect <ctr>          # Detailed container info
docker stats                  # Live CPU / memory usage
docker top <ctr>              # Processes inside container
docker --version              # Docker version
docker info                   # Host + engine info
docker ps                     # Running containers
docker ps -a                  # All containers
docker inspect <ctr>          # Detailed container info
docker stats                  # Live CPU / memory usage
docker top <ctr>              # Processes inside container

🔹 2. Running & Managing Containers

docker run -it --name mybox alpine /bin/sh    # Interactive container
docker run -d --name web -p 8080:80 httpd     # Detached mode
docker create --name test httpd               # Create only (no start)
docker start <ctr>                            # Start container
docker stop <ctr>                             # Stop container
docker restart <ctr>                          # Restart container
docker pause <ctr>                            # Freeze container
docker unpause <ctr>                          # Resume container
docker run -it --name mybox alpine /bin/sh    # Interactive container
docker run -d --name web -p 8080:80 httpd     # Detached mode
docker create --name test httpd               # Create only (no start)
docker start <ctr>                            # Start container
docker stop <ctr>                             # Stop container
docker restart <ctr>                          # Restart container
docker pause <ctr>                            # Freeze container
docker unpause <ctr>                          # Resume container

🔹 3. Logs & Monitoring

docker logs <ctr>                # Show logs
docker logs -f --tail 100 <ctr>  # Follow logs (last 100 lines)
docker logs <ctr>                # Show logs
docker logs -f --tail 100 <ctr>  # Follow logs (last 100 lines)

🔹 4. Copy & Rename

docker cp <ctr>:/path/in/ctr /path/on/host   # Copy from container
docker rename old_name new_name              # Rename container
docker cp <ctr>:/path/in/ctr /path/on/host   # Copy from container
docker rename old_name new_name              # Rename container

🔹 5. Resource Controls (CPU & Memory)

docker run -d --memory=512m httpd
docker run -d --cpus="1.5" --memory=512m httpd
docker update --cpus=1.5 --memory=512m <ctr>
docker run -d --memory=512m --memory-swap=512m myapp   # Disable swap
docker run -d --read-only --tmpfs /tmp:rw,size=64m myapp  # Read-only FS
docker run -d --memory=512m httpd
docker run -d --cpus="1.5" --memory=512m httpd
docker update --cpus=1.5 --memory=512m <ctr>
docker run -d --memory=512m --memory-swap=512m myapp   # Disable swap
docker run -d --read-only --tmpfs /tmp:rw,size=64m myapp  # Read-only FS

🔹 6. Remove Containers & Images

docker rm <ctr>              # Remove container
docker rmi <image>           # Remove image
docker system prune -a       # Cleanup unused resources
docker rm <ctr>              # Remove container
docker rmi <image>           # Remove image
docker system prune -a       # Cleanup unused resources

🔹 7. Import / Export

docker export <ctr> > ctr.tar
docker import ctr.tar myimg:latest
docker save -o img.tar myimg
docker load -i img.tar
docker export <ctr> > ctr.tar
docker import ctr.tar myimg:latest
docker save -o img.tar myimg
docker load -i img.tar

🔹 8. Images

docker images
docker image history httpd
docker image inspect httpd
docker pull httpd:latest
docker tag httpd:latest myrepo/httpd
docker push myrepo/httpd
docker search nginx
docker images
docker image history httpd
docker image inspect httpd
docker pull httpd:latest
docker tag httpd:latest myrepo/httpd
docker push myrepo/httpd
docker search nginx

🔹 9. Volumes

docker volume ls
docker volume create myvol
docker volume rm myvol
docker volume prune
docker run -d -v myvol:/data httpd
docker run -d --mount type=bind,source=/host,target=/ctr alpine
docker run -d --mount type=tmpfs,destination=/app,tmpfs-size=70m alpine
docker volume ls
docker volume create myvol
docker volume rm myvol
docker volume prune
docker run -d -v myvol:/data httpd
docker run -d --mount type=bind,source=/host,target=/ctr alpine
docker run -d --mount type=tmpfs,destination=/app,tmpfs-size=70m alpine

🔹 10. Networks

docker network ls
docker network create mybridge
docker network create --driver overlay myoverlay   # Swarm only
docker network connect mybridge <ctr>
docker network disconnect mybridge <ctr>
docker run -d --name web --network mybridge nginx
docker run -d --network none nginx
docker network rm mybridge
docker network ls
docker network create mybridge
docker network create --driver overlay myoverlay   # Swarm only
docker network connect mybridge <ctr>
docker network disconnect mybridge <ctr>
docker run -d --name web --network mybridge nginx
docker run -d --network none nginx
docker network rm mybridge

🔹 11. Docker Compose

docker-compose up -d              # Start services
docker-compose down               # Stop & remove
docker-compose ps                 # List services
docker-compose logs -f            # Logs
docker-compose exec <svc> sh      # Shell into service
docker-compose build              # Build images
docker-compose pull               # Pull images
docker-compose restart <svc>      # Restart service
docker-compose scale web=3        # Scale replicas
docker-compose up -d              # Start services
docker-compose down               # Stop & remove
docker-compose ps                 # List services
docker-compose logs -f            # Logs
docker-compose exec <svc> sh      # Shell into service
docker-compose build              # Build images
docker-compose pull               # Pull images
docker-compose restart <svc>      # Restart service
docker-compose scale web=3        # Scale replicas

🔹 12. Docker Swarm

docker swarm init --advertise-addr <IP>
docker swarm join --token <token> <ip>:2377
docker swarm leave

docker node ls
docker node promote <node>
docker node demote <node>
docker node rm <node>
docker node update --availability drain <node>
docker node update --availability pause <node>

docker service create --replicas 2 -p 80:80 --name myweb nginx
docker service ls
docker service ps myweb
docker service scale myweb=5
docker service update --image nginx:1.25 myweb
docker service rollback myweb
docker swarm init --advertise-addr <IP>
docker swarm join --token <token> <ip>:2377
docker swarm leave

docker node ls
docker node promote <node>
docker node demote <node>
docker node rm <node>
docker node update --availability drain <node>
docker node update --availability pause <node>

docker service create --replicas 2 -p 80:80 --name myweb nginx
docker service ls
docker service ps myweb
docker service scale myweb=5
docker service update --image nginx:1.25 myweb
docker service rollback myweb

🔹 13. Security Best Practices (Commands)

# Non-root, CPU & memory limits, drop privileges
docker run -d --name safe-app \
  --memory=512m --cpus="0.5" \
  --security-opt=no-new-privileges \
  --cap-drop=ALL \
  myuser/app:1.0

# Read-only filesystem + tmpfs
docker run -d --read-only \
  --tmpfs /tmp:rw,size=64m \
  myuser/app:1.0
# Non-root, CPU & memory limits, drop privileges
docker run -d --name safe-app \
  --memory=512m --cpus="0.5" \
  --security-opt=no-new-privileges \
  --cap-drop=ALL \
  myuser/app:1.0

# Read-only filesystem + tmpfs
docker run -d --read-only \
  --tmpfs /tmp:rw,size=64m \
  myuser/app:1.0