# devcontainers/spec

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/devcontainers-spec).**

5,183 stars · 448 forks · cc-by-4.0

## Links

- GitHub: https://github.com/devcontainers/spec
- Homepage: https://containers.dev
- awesome-repositories: https://awesome-repositories.com/repository/devcontainers-spec.md

## Topics

`containers` `devcontainers`

## Description

The Development Container Specification defines a standardized metadata format and protocol for creating reproducible, containerized development environments that work identically across local machines, remote services, and CI/CD pipelines. At its core, it provides a declarative JSON schema that captures the container image, tools, runtime, lifecycle scripts, and editor customizations for a workspace. This approach treats the development environment as code—version-controlled, shareable, and portable.

Key to the specification is a cross-platform provisioning protocol that applies the same configuration to local Docker, cloud clusters, and remote backends without drift. A feature-based extension system distributes self-contained installation units as versioned packages that can be composed into any container configuration. The protocol also includes lifecycle script orchestration for automating setup steps at container creation or start events, a prebuild image caching layer that builds and caches full container images from CI for instant first-use startup, and template-based scaffolding for bootstrapping projects with pre-configured common language stacks.

The specification supports authoring and managing reusable features and templates, including discovery from curated registries and integration of pre-built components. It defines development container configuration via JSON metadata files, with support for Dockerfiles and Docker Compose as base definitions, and enables editor customization for consistent IDE settings. Additional capabilities include CI/CD integration for prebuilding container images and caching them, in-container build and test execution, and shared configuration package updates to keep development setups current.

## Tags

### Development Tools & Productivity

- [Development Container Configuration](https://awesome-repositories.com/f/development-tools-productivity/container-development-environments/development-container-configuration.md) — A standardized metadata format and protocol for defining reproducible containerized development environments that work across local machines, cloud platforms, and CI. ([source](https://containers.dev/))
- [Dev Container Configuration Format](https://awesome-repositories.com/f/development-tools-productivity/workspace-management/project-workspaces/workspace-organization/containerized-workspaces/dev-container-configuration-format.md) — A JSON-based metadata schema that captures the container image, dependencies, lifecycle scripts, and editor customizations for a development workspace.
- [Declarative Environment Configurations](https://awesome-repositories.com/f/development-tools-productivity/development-environments/declarative-environment-configurations.md) — A declarative approach to infrastructure that defines development environment tooling and configuration in version-controlled, shareable files.
- [Lifecycle Script Execution](https://awesome-repositories.com/f/development-tools-productivity/lifecycle-script-execution.md) — Orchestrates user-defined commands at container lifecycle events like post-create and post-start.
- [Multi-Platform Provisioning](https://awesome-repositories.com/f/development-tools-productivity/notebook-environments/environment-provisioning/container-based-provisioning/multi-platform-provisioning.md) — Applies the same configuration to create identical environments on local Docker, cloud services, or cluster backends. ([source](https://containers.dev/supporting))
- [Cross-Platform](https://awesome-repositories.com/f/development-tools-productivity/workspace-provisioning/cross-platform.md) — Applies the same development container configuration across Docker, cloud, and cluster backends without drift.
- [Environment Asset Catalogs](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/developer-ecosystems/community-extension-integrators/community-dependency-repositories/community-extension-discovery/environment-asset-catalogs.md) — Lists official and community-contributed features and templates from a continuously monitored registry. ([source](https://containers.dev/collections))
- [Environment Scaffolding Templates](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-templates/environment-scaffolding-templates.md) — Provides template-based scaffolding for bootstrapping projects with pre-configured common language stacks.
- [Container Template Selection](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-templates/environment-scaffolding-templates/container-template-selection.md) — Dev Containers provides pre-configured container templates for common language and tool stacks that serve as starting points for environment configuration. ([source](https://containers.dev/templates))

### DevOps & Infrastructure

- [Development Environment Reproducibility](https://awesome-repositories.com/f/devops-infrastructure/reproducible-environments/development-environment-reproducibility.md) — Defines and shares containerized setups that run identically across local machines, remote hosts, and CI pipelines.
- [Development](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/cicd-pipeline-management/automation-workflows/container-lifecycle-automation/development.md) — Runs user-defined commands at container creation stages to automate dependency installation and setup.
- [Cross-Platform Provisioning Protocols](https://awesome-repositories.com/f/devops-infrastructure/cloud-provisioning/remote-development-provisioning/cross-platform-provisioning-protocols.md) — Defines the core protocol for provisioning identical workspaces across local and remote platforms.
- [Container Image Prebuilding](https://awesome-repositories.com/f/devops-infrastructure/container-ci-cd-pipelines/container-image-prebuilding.md) — Prebuild and cache container images from configuration to enable fast environment startup and consistent builds in continuous integration.
- [Prebuild Image Caching](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/image-management-tools/container-image-caching/build-layer-caching/prebuild-image-caching.md) — Implements a prebuild image caching layer that builds and caches full container images from CI for instant startup.
- [Container Configuration Prebuilding](https://awesome-repositories.com/f/devops-infrastructure/dev-container-specifications/container-configuration-prebuilding.md) — Prebuilds and caches container images from configuration for fast environment start-up on first launch. ([source](https://containers.dev/supporting))
- [Reusable Features and Templates](https://awesome-repositories.com/f/devops-infrastructure/dev-container-specifications/reusable-features-and-templates.md) — Creates, shares, and references self-contained installation components and starter configs for common stacks.
- [Composable Feature Packages](https://awesome-repositories.com/f/devops-infrastructure/distribution-packaging/system-package-manager-installations/container-package-installation/composable-feature-packages.md) — Ships a composable feature system for distributing self-contained installation units as versioned packages.
- [Feature Authoring](https://awesome-repositories.com/f/devops-infrastructure/distribution-packaging/system-package-manager-installations/container-package-installation/composable-feature-packages/feature-authoring.md) — Dev Containers enables creating self-contained, shareable units of installation code and configuration that can be reused across multiple development containers. ([source](https://containers.dev/guides))
- [In-Container Build Specifications](https://awesome-repositories.com/f/devops-infrastructure/container-build-specifications/in-container-build-specifications.md) — Runs build and test commands inside the container to guarantee identical development environments. ([source](https://containers.dev/overview))
- [Dockerfile and Compose Integration](https://awesome-repositories.com/f/devops-infrastructure/dockerfile-utilities/dockerfile-and-compose-integration.md) — Supports Dockerfiles and Docker Compose as base definitions alongside the JSON metadata format. ([source](https://containers.dev/guides))

### Data & Databases

- [Declarative Environment Schemas](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-serialization/json-schema/declarative-environment-schemas.md) — Provides the declarative JSON schema that defines the entire development environment configuration.

### User Interface & Experience

- [Container Editor Customizations](https://awesome-repositories.com/f/user-interface-experience/editor-customization-tools/editor-appearance-customization/container-editor-customizations.md) — Allows specifying IDE extensions, settings, and other customizations to apply inside the container. ([source](https://containers.dev/supporting))
