Skip to main content
  1. Notes/

Blog · Devops

Docker Commands Reference: A Mobile Dev's Cheatsheet

··17 mins·
Mjashem
Devops Docker Mobile-Development Docker Docker-Compose Containers Devops Mobile-Development Commands Reference
Docker Commands Reference: A Mobile Dev's Cheatsheet
Mohammad Jashem
Author
Mohammad Jashem
Senior full-stack mobile engineer with 7+ years building production apps end-to-end for Android, iOS, Web, and TV. Flutter, React Native, Expo — plus backend, CI/CD, and infrastructure. Architecture-first, AI-native delivery. Available for freelance and Upwork engagements.
Table of Contents

Docker Commands Reference: A Mobile Dev’s Cheatsheet
#

As a mobile app developer, I constantly find myself searching for Docker commands. Whether I’m setting up a React Native development environment, building Flutter apps in containers, or managing CI/CD pipelines, Docker is essential—but the commands are hard to remember. For the broader why — what a Docker-backed mobile release pipeline actually looks like end-to-end — I wrote up my mobile CI/CD release-automation setup. This comprehensive reference guide covers everything from daily essentials to advanced operations, with special focus on cleanup and system management commands that every developer needs.

Introduction: Why Docker for Mobile Development?
#

Docker has become indispensable for mobile developers because it:

  • Standardizes development environments across teams
  • Simplifies CI/CD pipelines for mobile apps
  • Manages dependencies for complex build tools
  • Isolates build processes for different platforms
  • Enables consistent testing environments

Most Essential Docker Commands (Daily Use)
#

Container Operations
#

# Run a container
docker run nginx:latest

# Run in detached mode with port mapping
docker run -d -p 8080:80 nginx:latest

# List running containers
docker ps

# List all containers (including stopped)
docker ps -a

# Stop a container
docker stop <container_id>

# Start a stopped container
docker start <container_id>

# Restart a container
docker restart <container_id>

# Remove a container
docker rm <container_id>

# View container logs
docker logs <container_id>

# Follow logs in real-time
docker logs -f <container_id>

# Execute commands in a running container
docker exec -it <container_id> /bin/bash

# Inspect container details
docker inspect <container_id>

# Copy files to/from container
docker cp <container_id>:/path/to/file ./local_file
docker cp ./local_file <container_id>:/path/to/file

Docker Compose
#

# Start all services in detached mode
docker compose up -d

# Stop and remove all services
docker compose down

# Stop and remove services, networks, and volumes
docker compose down --volumes

# List all running containers
docker compose ps

# View logs from all services
docker compose logs

# Follow logs in real-time
docker compose logs -f

# View logs for specific service
docker compose logs web

# Execute command in a service container
docker compose exec web bash

# Build all services
docker compose build

# Pull latest images for all services
docker compose pull

# Restart specific service
docker compose restart web

Cleanup Commands (Daily Maintenance)
#

# Complete system cleanup (most used)
docker system prune --all --volumes --force

# Remove stopped containers
docker container prune --force

# Remove unused images
docker image prune --all --force

# Remove unused volumes
docker volume prune --force

# Clean build cache
docker builder prune --all --force

# Remove all stopped containers quickly
docker rm -f $(docker ps -aq)

# Remove all dangling images
docker rmi -f $(docker images -f "dangling=true" -q)

Image Management
#

# Build an image from Dockerfile
docker build -t myapp:latest .

# Pull an image from registry
docker pull nginx:latest

# Push an image to registry
docker push myusername/myapp:latest

# List local images
docker images

# Remove an image
docker rmi nginx:latest

# Tag an image
docker tag myapp:latest myusername/myapp:v1.0

# Remove all unused images
docker image prune --all --force

Complete Docker CLI Reference
#

Container Management
#

Lifecycle Commands
#

# Create and run a new container
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# Common run options:
docker run -d                    # Detached mode
docker run -it                   # Interactive with TTY
docker run -p 8080:80           # Port mapping
docker run -v /host:/container   # Volume mounting
docker run --name mycontainer    # Container name
docker run --rm                 # Remove container on exit
docker run -e ENV_VAR=value     # Environment variable
docker run --restart always     # Restart policy

# Start one or more stopped containers
docker start [OPTIONS] CONTAINER [CONTAINER...]

# Stop one or more running containers
docker stop [OPTIONS] CONTAINER [CONTAINER...]

# Restart one or more containers
docker restart [OPTIONS] CONTAINER [CONTAINER...]

# Pause all processes in one or more containers
docker pause CONTAINER [CONTAINER...]

# Unpause all processes in one or more containers
docker unpause CONTAINER [CONTAINER...]

# Force stop and remove a container
docker kill [OPTIONS] CONTAINER [CONTAINER...]

Management Commands
#

# List containers
docker ps [OPTIONS]
docker ps -a          # Show all containers
docker ps -q          # Only display container IDs
docker ps --format "table {{.Names}}\t{{.Status}}"  # Custom format

# Display detailed information on one or more containers
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

# Display a live stream of container(s) resource usage statistics
docker stats [OPTIONS] [CONTAINER...]

# Display the running processes of a container
docker top CONTAINER [ps OPTIONS]

# Update configuration of one or more containers
docker update [OPTIONS] CONTAINER [CONTAINER...]

Removal Commands
#

# Remove one or more containers
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm -f                   # Force removal
docker rm -v                   # Remove anonymous volumes
docker rm --link               # Remove specified links

# Remove all stopped containers
docker container prune
docker container prune --force # Remove without confirmation
docker container prune --filter "until=24h"  # Filter by time

Image Operations
#

Build and Distribution
#

# Build an image from a Dockerfile
docker build [OPTIONS] PATH | URL | -
docker build -t name:tag .     # Tag image
docker build -f Dockerfile.dev # Use different Dockerfile
docker build --no-cache        # Disable cache
docker build --build-arg VAR=value  # Build-time variables

# Pull an image or a repository from a registry
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

# Push an image or a repository to a registry
docker push [OPTIONS] NAME[:TAG|@DIGEST]

# Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

# Commit a new image from a container's changes
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Management and Inspection
#

# List images
docker images [OPTIONS] [REPOSITORY[:TAG]]
docker images -a               # Show intermediate images
docker images --digests        # Show digests
docker images --format "table {{.Repository}}\t{{.Size}}"  # Custom format

# Display detailed information on one or more images
docker image inspect [OPTIONS] IMAGE [IMAGE...]

# Show the history of an image
docker history [OPTIONS] IMAGE
docker history --no-trunc      # Don't truncate output
docker history --format "table {{.ID}}\t{{.CreatedBy}}"  # Custom format

Export/Import and Removal
#

# Save one or more images to a tar archive
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o myapp.tar myapp:latest

# Load an image from a tar archive or STDIN
docker load [OPTIONS]
docker load -i myapp.tar

# Remove one or more images
docker rmi [OPTIONS] IMAGE [IMAGE...]
docker rmi -f                 # Force removal
docker rmi --no-prune         # Do not delete untagged parents

# Remove unused images
docker image prune
docker image prune -a         # Remove all unused images
docker image prune --filter "until=24h"  # Filter by time

Volume Management (Complete Coverage)
#

Volume Operations
#

# Create a volume
docker volume create [OPTIONS] [VOLUME]
docker volume create mydata
docker volume create --opt type=tmpfs --opt device=tmpfs mytmpfs

# List volumes
docker volume ls [OPTIONS]
docker volume ls --format "table {{.Name}}\t{{.Driver}}"  # Custom format

# Display detailed information on one or more volumes
docker volume inspect [OPTIONS] VOLUME [VOLUME...]

# Remove one or more volumes
docker volume rm [OPTIONS] VOLUME [VOLUME...]
docker volume rm -f           # Force removal

# Remove all unused local volumes
docker volume prune
docker volume prune --filter "label!=keep"  # Filter by label

Volume Usage in Containers
#

# Bind mount (host directory to container)
docker run -v /host/path:/container/path nginx

# Named volume
docker run -v myvolume:/container/path nginx

# Read-only volume
docker run -v myvolume:/container/path:ro nginx

# Volume with options
docker run --mount type=volume,src=myvolume,dst=/container/path,volume-driver=local nginx

# Anonymous volume (automatically created)
docker run -v /container/path nginx

# Tmpfs mount (memory-only)
docker run --tmpfs /tmp nginx

# Multiple volumes
docker run \
  -v app-data:/data \
  -v ./logs:/var/log \
  -v /tmp:tmpfs \
  nginx

System and Cleanup Commands (Comprehensive Coverage)
#

System Information
#

# Display system-wide information
docker system info
docker system info --format '{{json .}}'  # JSON output

# Show Docker filesystem space usage
docker system df
docker system df --verbose    # Detailed output

# Get real time events from the server
docker system events [OPTIONS]
docker system events --since="2024-01-01"  # Filter by time
docker system events --filter "event=stop"  # Filter by event type

Cleanup Commands (The Most Important Ones)
#

# Remove unused data (containers, networks, images, build cache)
docker system prune
docker system prune --all         # Remove all unused images, not just dangling
docker system prune --volumes     # Also remove unused volumes
docker system prune --force       # Remove without confirmation
docker system prune --filter "until=24h"  # Filter by time

# Remove stopped containers
docker container prune
docker container prune --force
docker container prune --filter "label!=maintain"

# Remove unused images
docker image prune
docker image prune --all         # Remove all unused images
docker image prune --filter "until=7d"

# Remove unused networks
docker network prune
docker network prune --force

# Remove unused volumes
docker volume prune
docker volume prune --force
docker volume prune --filter "label!=keep"

# Clean build cache
docker builder prune
docker builder prune --all
docker builder prune --filter "until=24h"

Advanced Cleanup Strategies
#

# Remove all containers (running and stopped)
docker rm -f $(docker ps -aq)

# Remove all images
docker rmi -f $(docker images -q)

# Remove all dangling images
docker rmi -f $(docker images -f "dangling=true" -q)

# Remove all unused volumes
docker volume rm $(docker volume ls -q -f "dangling=true")

# Remove all exited containers
docker rm $(docker ps -q -f "status=exited")

# Comprehensive cleanup script
docker system prune --all --volumes --force
docker builder prune --all --force

Network Management
#

Network Operations
#

# Create a network
docker network create [OPTIONS] NETWORK
docker network create mynet
docker network create --driver bridge mynet
docker network create --subnet=192.168.0.0/16 mynet

# Connect a container to a network
docker network connect [OPTIONS] NETWORK CONTAINER
docker network connect mynet mycontainer

# Disconnect a container from a network
docker network disconnect [OPTIONS] NETWORK CONTAINER

# List networks
docker network ls [OPTIONS]
docker network ls --format "table {{.Name}}\t{{.Driver}}"  # Custom format

# Display detailed information on one or more networks
docker network inspect [OPTIONS] NETWORK [NETWORK...]

# Remove one or more networks
docker network rm NETWORK [NETWORK...]

# Remove all unused networks
docker network prune
docker network prune --force

Security and Scanning Commands
#

# Docker Scout - Analyze images for vulnerabilities
docker scout cves [IMAGE]
docker scout cves nginx:latest

# Generate SBOM (Software Bill of Materials)
docker sbom [OPTIONS] IMAGE
docker sbom --format spdx-json nginx:latest

# Docker Trust - Sign and verify images
docker trust sign IMAGE:TAG
docker trust verify IMAGE:TAG
docker trust inspect --pretty IMAGE:TAG

# Security scanning with Docker Desktop
docker scan [OPTIONS] IMAGE
docker scan nginx:latest

Build Tools and Advanced Commands
#

# Docker Buildx - Advanced build features
docker buildx build [OPTIONS] PATH
docker buildx build --platform linux/amd64,linux/arm64 .  # Multi-platform
docker buildx build --push .           # Build and push

# Builder management
docker buildx create --name mybuilder
docker buildx use mybuilder
docker buildx ls
docker buildx rm mybuilder

# Docker Bake - Complex builds with bake files
docker bake [OPTIONS] [TARGET]
docker bake -f docker-bake.hcl mytarget

# Docker Init - Create starter files (interactive, prompts for language/framework)
docker init

# New commands (Docker v27+)
docker mcp [OPTIONS] COMMAND      # Model Control Protocol
docker model [OPTIONS] COMMAND    # Docker Model Runner

Docker Compose Commands (v2 Latest)
#

Core Commands
#

# Create and start containers
docker compose up [OPTIONS] [SERVICE...]
docker compose up -d              # Detached mode
docker compose up --build         # Build images before starting
docker compose up --force-recreate # Force recreate containers

# Stop and remove containers, networks, volumes
docker compose down [OPTIONS]
docker compose down --volumes     # Remove named volumes
docker compose down --rmi all     # Remove all images
docker compose down --remove-orphans  # Remove containers for services not defined

# List containers
docker compose ps [OPTIONS] [SERVICE]
docker compose ps -a              # Show stopped containers
docker compose ps --format "table {{.Name}}\t{{.Status}}"  # Custom format

# View output from containers
docker compose logs [OPTIONS] [SERVICE]
docker compose logs -f            # Follow log output
docker compose logs --tail=100    # Show last N lines
docker compose logs --timestamps  # Show timestamps

Build and Pull Commands
#

# Build or rebuild services
docker compose build [OPTIONS] [SERVICE...]
docker compose build --no-cache   # Build without cache
docker compose build --parallel   # Build in parallel

# Pull service images
docker compose pull [OPTIONS] [SERVICE...]
docker compose pull --ignore-pull-failures  # Don't fail if pull fails

# Watch for changes and rebuild/restart
docker compose watch [OPTIONS] [SERVICE...]
docker compose watch --quiet     # Suppress output

Service Management
#

# Execute a command in a running container
docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]
docker compose exec -T service sh  # Non-interactive mode

# Run a one-off command on a service
docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]
docker compose run --rm service command  # Remove container after command
docker compose run -d service command    # Run in background

# Scale services (`scale` was removed in Compose v2 — pass --scale on up)
docker compose up --scale web=3 --scale worker=2 -d

# Restart services
docker compose restart [OPTIONS] [SERVICE...]

# Start services
docker compose start [SERVICE...]

# Stop services
docker compose stop [OPTIONS] [SERVICE...]
docker compose stop -t 30          # Timeout before stopping

Configuration Commands
#

# Validate and view the Compose file
docker compose config [OPTIONS]
docker compose config --quiet     # Validate only
docker compose config --services  # List services
docker compose config --volumes   # List volumes

# Convert compose file to another format
docker compose convert [OPTIONS]
docker compose convert --format json  # Convert to JSON

# Create and start containers (but don't start)
docker compose create [OPTIONS] [SERVICE...]

# Force stop service containers
docker compose kill [OPTIONS] [SERVICE...]
docker compose kill -s SIGINT     # Send specific signal

# Pause services
docker compose pause [SERVICE...]

# Unpause services
docker compose unpause [SERVICE...]

# Display running processes
docker compose top [SERVICE...]

# Show resource usage statistics
docker compose ps --stats

Cleanup Commands for Compose
#

# Remove stopped containers
docker compose rm [OPTIONS] [SERVICE...]
docker compose rm -f             # Force removal
docker compose rm -s             # Stop containers before removal
docker compose rm -v             # Remove anonymous volumes

# Remove unused images, containers, networks, and volumes
docker compose down --volumes --rmi all --remove-orphans

# Clean up build cache
docker compose build --no-cache
docker system prune --all --volumes --force

Latest Docker Features (2024-2025)
#

Docker Engine v27 Highlights
#

# Enhanced shell completions
docker completion bash           # Generate bash completion
docker completion zsh            # Generate zsh completion

# GPU support
docker run --gpus all            # Use all GPUs
docker run --gpus '"device=0"'   # Use specific GPU

New Commands
#

# Docker Model Runner (v27+)
docker model pull MODEL          # Pull a model
docker model run MODEL PROMPT    # Run inference
docker model ls                  # List models
docker model rm MODEL            # Remove model

# Docker MCP (Model Control Protocol)
docker mcp start                 # Start MCP server
docker mcp stop                  # Stop MCP server
docker mcp status                # Check MCP status

Mobile Development Specific Use Cases
#

React Native Development
#

# Create React Native development container
docker run -it --rm \
  -v $(pwd):/app \
  -v /app/node_modules \
  -p 8081:8081 \
  --name rn-dev \
  reactnativecommunity/react-native-cli

# Run React Native app in container
docker run -it --rm \
  -v $(pwd):/app \
  -p 8081:8081 \
  reactnativecommunity/react-native-cli \
  npx react-native start

# Build React Native app
docker run -it --rm \
  -v $(pwd):/app \
  reactnativecommunity/react-native-cli \
  npx react-native build-android

Flutter Development
#

# Flutter development environment
docker run -it --rm \
  -v $(pwd):/app \
  -v /dev/bus/usb:/dev/bus/usb \
  --privileged \
  -p 8080:8080 \
  cirrusci/flutter:latest \
  flutter devices

# Run Flutter app
docker run -it --rm \
  -v $(pwd):/app \
  -v /dev/bus/usb:/dev/bus/usb \
  --privileged \
  cirrusci/flutter:latest \
  flutter run

# Build Flutter app
docker run -it --rm \
  -v $(pwd):/app \
  cirrusci/flutter:latest \
  flutter build apk --release

CI/CD for Mobile Apps
#

# Multi-stage build for mobile app
docker build -f Dockerfile.mobile -t myapp:latest .

# Build with specific platform
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:multi .

# Security scan before deployment
docker scan myapp:latest

# SBOM generation for compliance
docker sbom --format spdx-json myapp:latest > sbom.json

Cleanup Best Practices Section
#

When to Use prune vs rm
#

Use docker system prune when:

  • You want to clean up everything at once
  • You’re running low on disk space
  • You want to remove all unused resources
  • You’re preparing for a fresh build

Use individual rm commands when:

  • You need to remove specific resources
  • You want to preserve some resources
  • You’re debugging specific issues
  • You need fine-grained control

Safe Cleanup Strategies
#

# Safe cleanup script (interactive)
#!/bin/bash
echo "=== Docker Cleanup Script ==="
echo "This will remove unused Docker resources."
echo "Press Ctrl+C to cancel or wait 5 seconds to continue..."
sleep 5

# Remove stopped containers with confirmation
echo "Removing stopped containers..."
docker container prune --force

# Remove unused images (keep last 24h)
echo "Removing unused images older than 24 hours..."
docker image prune --all --force --filter "until=24h"

# Remove unused networks
echo "Removing unused networks..."
docker network prune --force

# Don't remove volumes by default (ask user)
read -p "Remove unused volumes? This may delete data! [y/N] " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    docker volume prune --force
fi

echo "Cleanup complete!"

Automated Cleanup Scripts
#

# Daily cleanup cron job
#!/bin/bash
# Add to crontab: 0 2 * * * /path/to/daily-cleanup.sh

LOG_FILE="/var/log/docker-cleanup.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$DATE] Starting Docker cleanup..." >> $LOG_FILE

# System cleanup (keep last 7 days)
docker system prune --all --volumes --force --filter "until=168h" >> $LOG_FILE 2>&1

# Build cache cleanup
docker builder prune --all --force --filter "until=168h" >> $LOG_FILE 2>&1

echo "[$DATE] Docker cleanup completed." >> $LOG_FILE

Storage Optimization Tips
#

# Use .dockerignore to reduce build context
echo "node_modules/" >> .dockerignore
echo ".git/" >> .dockerignore
echo "*.log" >> .dockerignore

# Use multi-stage builds to reduce image size
# Example Dockerfile:
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:18-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
CMD ["npm", "start"]

# Optimize layer caching
# Order layers from least to most frequently changed
# Use .dockerignore to exclude unnecessary files

Production vs Development Cleanup
#

Development Environment:

# Aggressive cleanup for development
docker system prune --all --volumes --force
docker builder prune --all --force
docker volume prune --force

Production Environment:

# Conservative cleanup for production
docker container prune --force --filter "until=24h"
docker image prune --force --filter "until=168h"
# Never prune volumes in production without backup

Complete Quick Reference Cheatsheet
#

Daily Essentials (Most Used)
#

docker ps                    # List running containers
docker ps -a                # List all containers
docker run -d -p 8080:80 nginx  # Run container
docker logs <container>     # View logs
docker exec -it <container> bash  # Enter container
docker build -t app .       # Build image
docker push username/app    # Push to registry
docker pull nginx           # Pull image
docker stop <container>     # Stop container
docker rm <container>       # Remove container
docker rmi nginx            # Remove image

Cleanup Commands (Critical)
#

docker system prune --all --volumes --force  # Complete cleanup
docker container prune --force              # Remove stopped containers
docker image prune --all --force             # Remove unused images
docker volume prune --force                  # Remove unused volumes
docker builder prune --all --force           # Clean build cache

Volume Operations
#

docker volume create data                    # Create volume
docker volume ls                            # List volumes
docker volume inspect data                  # Inspect volume
docker volume rm data                       # Remove volume
docker run -v data:/app/data nginx          # Use volume

Docker Compose Essentials
#

docker compose up -d                       # Start services
docker compose down --volumes              # Stop and cleanup
docker compose ps                           # List containers
docker compose logs -f                      # Follow logs
docker compose exec service bash            # Enter service container
docker compose build                        # Build images
docker compose pull                         # Pull images

Network Operations
#

docker network create mynet                 # Create network
docker network ls                           # List networks
docker network connect mynet container      # Connect container
docker network disconnect mynet container   # Disconnect container
docker network rm mynet                     # Remove network

System Information
#

docker system info                          # System info
docker system df                            # Disk usage
docker version                              # Docker version
docker info                                  # System information

Advanced Operations
#

docker buildx build --platform linux/amd64,linux/arm64 .  # Multi-platform
docker scan image:tag                    # Security scan
docker sbom image:tag                     # Generate SBOM
docker stats                              # Resource usage
docker top container                      # Container processes

Conclusion
#

This comprehensive Docker commands reference covers everything from daily essentials to advanced operations. The key takeaways for mobile developers are:

  1. Master the basics first - focus on daily commands like run, ps, logs, exec
  2. Implement regular cleanup - use docker system prune and specific prune commands
  3. Understand volumes - they’re critical for data persistence in mobile development
  4. Use Docker Compose - simplifies multi-container development environments
  5. Stay updated - Docker v27 brings new features like Model Runner and improved security

Keep this guide handy as a reference, and you’ll spend less time searching for commands and more time building amazing mobile applications. Docker’s power lies in its simplicity once you understand the core commands and patterns.


This reference guide is continuously updated with the latest Docker features and best practices. Bookmark it for quick access during your mobile development workflow.