Overview
Snapshots are pre-built, versioned container images that enable lightning-fast sandbox creation. By building your development environment once and reusing it across multiple sandboxes, you can achieve sub-90ms startup times.What is a Snapshot?
A snapshot in Daytona is:- Pre-built Image: A complete container image with your environment configured
- Reusable Template: The foundation for creating multiple identical sandboxes
- Versioned: Each snapshot has a unique identifier and can be tracked over time
- Regional: Snapshots can be distributed across multiple regions for low-latency access
- Build Info: Includes metadata about the build source and configuration
Snapshots eliminate the build time from sandbox creation, enabling near-instantaneous environment provisioning.
Snapshot Structure
Every snapshot contains:Snapshot States
Snapshots progress through the following states:Snapshot State Definitions
Snapshot State Definitions
Creating Snapshots
From a Sandbox
The most common way to create a snapshot is from an existing sandbox:- Python
- TypeScript
- Go
From Build Configuration
Create snapshots directly from a Dockerfile or build configuration:Using Snapshots
Creating Sandboxes from Snapshots
Once a snapshot is created, use it to launch sandboxes instantly:Snapshot Versioning
Manage different versions of your environment:Snapshot Management
Listing Snapshots
Filtering Snapshots
Deleting Snapshots
Deleting a snapshot does not affect running sandboxes created from that snapshot. However, you won’t be able to create new sandboxes from the deleted snapshot.
General vs Organization Snapshots
General Snapshots
General snapshots are publicly available base images:- Pre-built by Daytona for common languages and frameworks
- Available to all users
- Cannot be modified or deleted
- Examples:
python:3.11,node:20,go:1.21
Organization Snapshots
Organization snapshots are private to your organization:- Created by you from configured sandboxes
- Only accessible within your organization
- Can be versioned and managed
- Optimized for your specific use cases
Snapshot Distribution
Regional Availability
Snapshots can be distributed across multiple regions for low-latency access:Build Information
Snapshots include metadata about their build source:Use Cases
Development Environment Standardization
CI/CD Pipeline Environments
Machine Learning Environments
Best Practices
- Version Snapshots: Use semantic versioning for snapshot names (e.g.,
env-v1.2.3) - Minimize Size: Keep snapshots lean by only installing necessary dependencies
- Document Changes: Maintain a changelog of what’s included in each snapshot version
- Regular Updates: Periodically rebuild snapshots with updated dependencies
- Test Before Promoting: Test new snapshot versions before making them the default
- Cleanup Old Versions: Remove unused snapshot versions to reduce storage costs
- Use General Snapshots: Start with general snapshots when possible for common use cases
Performance Optimization
Snapshot Size
Smaller snapshots = faster pull times:Layer Caching
Organize Dockerfile commands to maximize layer reuse:Next Steps
Sandboxes
Learn about creating and managing sandboxes
Volumes
Understand persistent storage with volumes
Architecture
Explore how snapshots fit into the system
Getting Started
Start building with snapshots