Skip to main content

Container Extension

The Container Extension is a Docker Desktop extension that provides a graphical interface for deploying and managing security probes inside running Docker containers. It integrates with Prelude Security's platform for continuous container security monitoring.

What It Does

  • View all running Docker containers in a unified interface
  • Deploy security probes ("nocturnal") to supported containers
  • Monitor probe status and container compatibility
  • Manage Prelude Security API credentials

Architecture

Core Components

App Component (App.tsx)

The main application component manages:

  • Container state: List of running containers with probe status
  • Multi-select: Checkbox selection for batch probe deployment
  • Auto-refresh: Container list refreshes every 5 seconds
  • Alert feedback: Temporary status messages via fireAlert() system

DockerCli Service (docker/cli.ts)

The bridge between Docker Desktop and Prelude Security:

class DockerCli {
#ddClient: DockerDesktopClient;
#service: Service;
}

Container management:

  • listContainers() — Retrieves running containers from Docker Engine
  • checkDependencies() — Validates container compatibility (checks for curl)
  • #checkRunningProbe() — Detects if a probe is already installed
  • #checkCurl() — Verifies required dependencies exist in container

Probe deployment:

  • deployProbe() — Full deployment workflow (register, download, transfer, execute)
  • #registerEndpoint() — Registers container with Prelude Security API
  • #downloadProbe() — Fetches the nocturnal probe binary

Credential management:

  • setCredentials() — Stores API credentials in localStorage
  • getCredentials() — Retrieves stored credentials

UI Components

ContainerTable — Paginated table (10 rows per page) showing container name, image, and probe status with visual indicators. Supports multi-selection via checkboxes.

ActionNavigation — Three primary actions:

  • Deploy Probes — Disabled when credentials are missing
  • Refresh — Manual container list refresh
  • Set Credentials — Opens credential entry modal

ProbeStatusIcon — Visual status indicators:

IconColorStatus
Running iconGreenProbe is active
Close iconPinkSupported but not installed
Do-not-disturb iconGrayContainer unsupported

CredentialModal — Dialog for entering Prelude Security account ID and API token. Validates required fields before saving.

Data Flow

Container Discovery

Probe Deployment

Probe Status Model

enum ProbeStatus {
Unsupported = 0, // Container lacks curl — cannot deploy
NotInstalled = 1, // Compatible but probe not running
Running = 2 // Probe deployed and active
}
Compatibility Requirement

Containers must have curl available to receive the probe binary. Alpine-based images and minimal distroless containers are typically marked as Unsupported. Use a full base image (e.g., ubuntu, debian) for probe compatibility.

Integration Points

SystemIntegrationPurpose
Docker Desktop Extension APIContainer listing, CLI command executionDiscover and manage containers
Prelude Security APIEndpoint registration, probe downloadsSecurity monitoring backend
localStorageCredential persistenceStore API keys across sessions

Error Handling

The extension provides user feedback through the ActionStatus component:

  • Network errors: API failures show human-readable error messages
  • Validation errors: Prevents deployment to unsupported containers
  • Status feedback: Real-time alerts for all operations with 5-second auto-dismiss
  • Graceful degradation: Continues processing remaining containers if one fails
tip

If a container shows as Unsupported, verify that the container image includes curl. You can test manually with docker exec <container-id> which curl.