GitHub
github.com › devcontainers › features
GitHub - devcontainers/features: A collection of Dev Container Features managed by Dev Container spec maintainers. See https://github.com/devcontainers/feature-starter to publish your own · GitHub
To reference a Feature from this repository, add the desired Features to a devcontainer.json. Each Feature has a README.md that shows how to reference the Feature and which options are available for that Feature. The example below installs the go and docker-in-docker declared in the ./src directory ...
Starred by 1.4K users
Forked by 590 users
Languages Shell
Development Containers
containers.dev › features
Available Dev Container Features
Development containers documentation and specification page.
.devcontainer Containerized environment workflow
-1. Regarding tools/features, the official docs link is correct. https://code.visualstudio.com/docs/devcontainers/create-dev-container#_install-additional-software They should be in the 'customizations' section of the Dockerfile. That way, when you share your devcontainer (and Dockerfile), everything gets shared correctly. -2. When using multiple softwares (e.g. Deno, PostgreSQL), you can use a single container, or multiple. However, single containers with everything in them is ideal as it maintains consistency across the application stack. In the case of multiple containers, you'll need to share each of the 'devcontainer' setups as well. The one advantage I see here is that if I want to use a single PostgreSQL instance across multiple applications, this is better, since my backups etc. contain the data of all applications. However, this requires extra fiddling to get everything working across containers. Have a look at the Microsoft DevContainers Templates at their Github repository - https://github.com/devcontainers/templates You will see examples of single as well as multiple containers. -3. The setup with the 'devcontainers' directory ideally should contain everything for a another developer to have an identical environment as yours. The application code doesn't need to be shared. Hope all this helps. All the best. More on reddit.com
Creating a dev 'container' to make it easier on first timers
Heyo! I've been using devcontainers and remote-containers for VS code since early beta, it is amazing and worth it. Here are a few tips: The Dockerfile for your devcontainer isn't your production Dockerfile if you have / need one. They could be similar, but they serve very different purposes. If you expect developers to be building and using docker images, consider having your devcontainer use docker-in-docker so people can attach to your devcontainer and run docker commands or docker-compose commands from there. The Dockerfile for your devcontainer specifies the static portions of the environment, the devcontainer.json is used for the more dynamic or VSCode specific parts like environment variables, post-creation actions (I use this to install do a pip install of my project dev-deps), and commonly used extensions. Treat devcontainers as the common starting point for every developer in your company. Don't try to cram everything you could ever want to need into the dev container, use it to only handle that parts that suit everybody, or at least the parts your company is willing to standardize. Leave room for your developers to each individually extend it to meet their own requirements such as using the extensions they want, choosing the theme they want, or installing their own tools in it. Don't require that everyone on your team use the devcontainer. A devcontainer shouldn't be a replacement for a local development environment, it is a replacement for not knowing how to build your own local development environment or not wanting to. And now to answer your more specific questions: I recommend using the Microsoft built-in images as base images. Just use the vscode command to create a new template and customize it as needed. Put your environment variables, commonly used extensions (ansible?), and to install any tools that are likely to change throughout your project such as development dependencies. You can also set up mount-points for developer-specific configurations such as secrets, keys, and tokens. Here is a template for a new python project I started where I'm making very heavy use of devcontainers, vscode extensions and various configurations, and a few other things that I think you could use for inspiration: https://github.com/tclasen/template-python Note that the standard / specification for "VSCode DevContainers" is also mostly compatible with "GitHub CodeSpaces". But there is also a completely different standard / specification that isn't compatible for "Docker-Desktop Dev Environments" that might also be worth looking into. Both are basically the same thing as were designed to make it so you could just pick up your development environment and ship it as a reproducible artifact to hand to any new developer to your team and reduce on-board from weeks long with a set of instructions to minutes long with the requirement they have docker and vscode installed. Huge win in my book. More on reddit.com
Devcontainer "features" inconsistently hang & timeout. Restarting sometimes fixes it. Any idea what on earth is going on?
More sources with the same issue: https://github.com/devcontainers/cli/issues/281 More on reddit.com
remote-nvim.nvim now supports dev containers
Nice Work! I am super excited to see how things like this progress once Neovim truly gets into a Client-Server model :)
More on reddit.comVideos
19:40
How to build your first Devcontainer - YouTube
06:33
Dev Container Features & Lifecycle Hooks - YouTube
01:11:56
Exploring the Dev Container Ecosystem - YouTube
01:00
Add a Feature to your dev container #vscode #containers - YouTube
19:45
you should be using dev containers - YouTube
05:15
Beginner's Guide to VS Code Dev Containers - The Instant Dev ...
Visual Studio Code
code.visualstudio.com › blogs › 2022 › 09 › 15 › dev-container-features
Custom Dev Container Features
September 15, 2022 - Referencing different Features from the devcontainers/features repository is as simple as adding a features property to your devcontainer.json. Each Feature has a README.md that shows how to reference the Feature and which options are available for it. The example below installs the go and ...
Ken Muse
kenmuse.com › blog › intro-to-dev-container-features
Intro to Dev Container Features - Ken Muse
January 21, 2023 - Features are referenced in the features section of the devcontainer.json file. They always follow a specific structure: 1"feature-id": { 2 // options, as JSON key-value pairs 3} The feature-id can be in one of three general formats: A reference to an OCI registry (which covers most of the major container registries). These are in the form registry/namespace/repository:version. For example, ghcr.io/devcontainers/features/go:1 is using the GHCR.io registry, has the tenant namespace devcontainers, has the repository path features/go, and is version 1.
GitHub
github.com › devcontainers › feature-starter
GitHub - devcontainers/feature-starter: A bootstrap repo for self-authoring Dev Container Features · GitHub
The example in this repository follows the dev container Feature distribution specification. To provide feedback to the specification, please leave a comment on spec issue #70. For more broad feedback regarding dev container Features, please see spec issue #61. This repository contains a collection of two Features - hello and color. These Features serve as simple feature implementations. Each sub-section below shows a sample devcontainer.json alongside example usage of the Feature.
Starred by 419 users
Forked by 244 users
Languages Shell
DEV Community
dev.to › jajera › creating-your-own-dev-container-feature-for-vs-code-1men
Creating Your Own Dev Container Feature for VS Code - DEV Community
December 31, 2025 - Learn how to develop and publish custom Dev Container Features for VS Code, using the Amazon Q CLI feature as a practical example. Includes forking, feature creation, publishing to GHCR, and submitting to the official features index. Tagged with devcontainer, vscode, github, features.
Development Containers
containers.dev › implementors › features
Dev Container Features reference
In the example below, both examples are equivalent. ... The id format specified dicates how a supporting tool will locate and download a given feature. id is one of the following: (*) OCI registry must implement the OCI Artifact Distribution Specification. Some implementors can be found here. (**) The provided path is always relative to the folder containing the devcontainer.json.
GitHub
docs.github.com › en › codespaces › setting-up-your-project-for-codespaces › configuring-dev-containers › adding-features-to-a-devcontainer-file
Adding features to a devcontainer.json file - GitHub Docs
To make the changes take effect in existing codespaces, you will need to pull the updates to the devcontainer.json file into your codespace, then rebuild the container for the codespace. For more information, see Introduction to dev containers. ... To add features in VS Code while you are working locally, and not connected to a codespace, you must have the "Dev Containers" extension installed and enabled.
Redirect
rocker-project.org › images › devcontainer › features.html
Rocker Dev Container Features – Rocker Project
{ "image": "mcr.microsoft.com/devcontainers/universal:2", "features": { "ghcr.io/rocker-org/devcontainer-features/r-apt:latest": {} } }
Medium
medium.com › versent-tech-blog › introduction-to-dev-containers-4c01cb1752a0
Introduction to Dev Containers. An introduction to Dev Containers in… | by Mathew Hemphill | Versent Tech Blog | Medium
June 19, 2024 - { "name": "Java Development", "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/devcontainers/features/git:1": { "version": "latest", "ppa": "false" }, "ghcr.io/devcontainers/features/java:1": { "version": "21", "jdkDistro": "amzn", "installMaven": "true", "mavenVersion": "3.9.7", "installGradle": "false" } }, "containerEnv": {}, "customizations": { "vscode": { "settings": {}, "extensions": [ "vscjava.vscode-java-pack" ] } } }
GitHub
github.com › devcontainers › spec › blob › main › docs › specs › devcontainer-features.md
spec/docs/specs/devcontainer-features.md at main · devcontainers/spec
This property is intended to be used by the supporting tools for highlighting Feature deprecation. ... Defaults to unset. Cross-orchestrator way to add additional mounts to a container. Each value is an object that accepts the same values as the Docker CLI --mount flag. The Pre-defined devcontainerId variable may be referenced in the value. For example: "mounts": [{ "source": "dind-var-lib-docker", "target": "/var/lib/docker", "type": "volume" }]
Author devcontainers
PAUL'S BLOG
paulyu.dev › article › revisiting-devcontainer-features
Re-visiting Dev Container Features | PAUL'S BLOG
December 2, 2022 - Here is an example of what your devcontainer.json file would look like if you needed Azure CLI with Azure Bicep and the Azure Managed Grafana, AKS (preview), and Azure Container Apps extensions installed: { "name": "Ubuntu", "image": "mcr.microsoft.com/devcontainers/base:jammy", "features": { "ghcr.io/devcontainer/features/azure-cli:1.0.7": { "version": "latest", "extensions": "amg,aks-preview,containerapp", "installBicep": true } }, "remoteUser": "vscode" }
Claude
code.claude.com › docs › en › devcontainer
Development containers - Claude Code Docs
The following example mounts a volume at the home directory of the node user: ... Replace /home/node with the home directory of your container’s remoteUser. If you mount the volume somewhere other than ~/.claude, set CLAUDE_CONFIG_DIR to the mount path so Claude Code reads and writes there. To isolate state per project rather than sharing one volume across all repositories, include the ${devcontainerId} variable in the source name.
Lukewiwa
lukewiwa.com › blog › dev_container_features
Dev Container Features
November 24, 2022 - "features": { "ghcr.io/devcontainers/features/docker-from-docker:1": {}, "ghcr.io/devcontainers/features/git:1": {}, "ghcr.io/guiyomh/features/vim:0": {}, "ghcr.io/devcontainers/features/common-utils:1": {}, "ghcr.io/dhoeric/features/hadolint:1": {}, }