Skip to main content

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:

Creating Snapshots

From a Sandbox

The most common way to create a snapshot is from an existing sandbox:

From Build Configuration

Create snapshots directly from a Dockerfile or build configuration:
Snapshot builds can take several minutes depending on the complexity of your environment. Use existing snapshots when possible for faster sandbox creation.

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

  1. Version Snapshots: Use semantic versioning for snapshot names (e.g., env-v1.2.3)
  2. Minimize Size: Keep snapshots lean by only installing necessary dependencies
  3. Document Changes: Maintain a changelog of what’s included in each snapshot version
  4. Regular Updates: Periodically rebuild snapshots with updated dependencies
  5. Test Before Promoting: Test new snapshot versions before making them the default
  6. Cleanup Old Versions: Remove unused snapshot versions to reduce storage costs
  7. 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