From 1a38220b802cd8c7c48f13c7fcceebde176fa9a8 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 28 Jul 2026 14:03:55 +0000 Subject: [PATCH] Automated documentation update [skip ci] --- src/anaconda/README.md | 3 ++ src/aws-cli/README.md | 1 + src/common-utils/README.md | 10 ++++++- src/conda/README.md | 2 +- src/copilot-cli/README.md | 4 +-- src/desktop-lite/README.md | 2 +- src/docker-in-docker/README.md | 17 +++++++++++- src/docker-outside-of-docker/README.md | 38 +++++++++----------------- src/dotnet/README.md | 34 ++++++++++++++++++++++- src/github-cli/README.md | 18 ++++++++---- src/kubectl-helm-minikube/README.md | 1 + src/node/README.md | 35 +++++++++++++++++------- src/nvidia-cuda/README.md | 4 +-- src/powershell/README.md | 2 +- src/ruby/README.md | 7 +++++ src/sshd/README.md | 2 +- 16 files changed, 128 insertions(+), 52 deletions(-) diff --git a/src/anaconda/README.md b/src/anaconda/README.md index f093ce618..9453e36c1 100644 --- a/src/anaconda/README.md +++ b/src/anaconda/README.md @@ -35,7 +35,10 @@ conda install python=3.7 ## OS Support This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. + Also RHEL based linux distributions such as almalinux, rockylinux, fedora are supported now. +Please do note that Alpine and cbl-mariner aren't supported due system level restrictions with the anaconda installer. + `bash` is required to execute the `install.sh` script. diff --git a/src/aws-cli/README.md b/src/aws-cli/README.md index e45cb3f4c..972026086 100644 --- a/src/aws-cli/README.md +++ b/src/aws-cli/README.md @@ -16,6 +16,7 @@ Installs the AWS CLI along with needed dependencies. Useful for base Dockerfiles | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| | version | Select or enter an AWS CLI version. | string | latest | +| verbose | Suppress verbose output. | boolean | true | ## Customizations diff --git a/src/common-utils/README.md b/src/common-utils/README.md index 3d21e8b3f..3e6ed769c 100644 --- a/src/common-utils/README.md +++ b/src/common-utils/README.md @@ -24,11 +24,19 @@ Installs a set of common command line utilities, Oh My Zsh!, and sets up a non-r | userUid | Enter UID for non-root user | string | automatic | | userGid | Enter GID for non-root user | string | automatic | | nonFreePackages | Add packages from non-free Debian repository? (Debian only) | boolean | false | +| installSsl | Install SSL? | boolean | true | ## OS Support This Feature should work on recent versions of Debian/Ubuntu, RedHat Enterprise Linux, Fedora, RockyLinux, and Alpine Linux. +## Included utilities + +In addition to the common CLI tools (curl, wget, git, jq, nano, vim, etc.), this Feature installs: + +- **bubblewrap** (`bwrap`) — a lightweight sandboxing tool used as a dependency by some desktop and container tooling. +- **socat** — a multipurpose relay for bidirectional data transfer between two independent data channels (e.g., sockets, files, pipes). + ## Using with dev container images This Feature is used in many of the [dev container images](https://github.com/search?q=repo%3Adevcontainers%2Fimages+%22ghcr.io%2Fdevcontainers%2Ffeatures%2Fcommon-utils%22&type=code), as a result @@ -38,7 +46,7 @@ these images have already allocated UID & GID 1000. Attempting to add this Featu By default, this script provides a custom command prompt that includes information about the git repository for the current folder. However, with certain large repositories, this can result in a slow command prompt due to the performance of needed git operations. -For performance reasons, a "dirty" indicator that tells you whether or not there are uncommitted changes is disabled by default. You can opt to turn this on for smaller repositories by entering the following in a terminal or adding it to your `postStartCommand`: +For performance reasons, a "dirty" indicator that tells you whether or not there are uncommitted changes is disabled by default. You can opt to turn this on for smaller repositories by entering the following in a terminal or adding it to your `postCreateCommand`: ```bash git config devcontainers-theme.show-dirty 1 diff --git a/src/conda/README.md b/src/conda/README.md index eaee45b2d..04aa950f7 100644 --- a/src/conda/README.md +++ b/src/conda/README.md @@ -35,7 +35,7 @@ conda install python=3.7 ## OS Support -This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. +This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. Both `x86_64` and `aarch64` architectures are supported. `bash` is required to execute the `install.sh` script. diff --git a/src/copilot-cli/README.md b/src/copilot-cli/README.md index 3b7fc3be5..c2724cc1a 100644 --- a/src/copilot-cli/README.md +++ b/src/copilot-cli/README.md @@ -1,7 +1,7 @@ # GitHub Copilot CLI (copilot-cli) -Installs the GitHub Copilot CLI. Auto-detects latest version and installs needed dependencies. +Installs the GitHub Copilot CLI. ## Example Usage @@ -28,4 +28,4 @@ This Feature should work on recent versions of Debian/Ubuntu-based distributions --- -_Note: This file was auto-generated from the [devcontainer-feature.json](https://github.com/devcontainers/features/blob/main/src/copilot-cli/devcontainer-feature.json). Add additional notes to a `NOTES.md`._ \ No newline at end of file +_Note: This file was auto-generated from the [devcontainer-feature.json](https://github.com/devcontainers/features/blob/main/src/copilot-cli/devcontainer-feature.json). Add additional notes to a `NOTES.md`._ diff --git a/src/desktop-lite/README.md b/src/desktop-lite/README.md index a70997405..67b26ee8a 100644 --- a/src/desktop-lite/README.md +++ b/src/desktop-lite/README.md @@ -16,7 +16,7 @@ Adds a lightweight Fluxbox based desktop to the container that can be accessed u | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| | version | Currently Unused! | string | latest | -| noVncVersion | The noVNC version to use | string | 1.2.0 | +| noVncVersion | The noVNC version to use | string | 1.6.0 | | password | Enter a password for desktop connections. If "noPassword", connections from the local host can be established without entering a password | string | vscode | | webPort | Enter a port for the VNC web client (noVNC) | string | 6080 | | vncPort | Enter a port for the desktop VNC server (TigerVNC) | string | 5901 | diff --git a/src/docker-in-docker/README.md b/src/docker-in-docker/README.md index 6bba801a8..8c487177b 100644 --- a/src/docker-in-docker/README.md +++ b/src/docker-in-docker/README.md @@ -38,7 +38,7 @@ This docker-in-docker Dev Container Feature is roughly based on the [official do * As the name implies, the Feature is expected to work when the host is running Docker (or the OSS Moby container engine it is built on). It may be possible to get running in other container engines, but it has not been tested with them. * The host and the container must be running on the same chip architecture. You will not be able to use it with an emulated x86 image with Docker Desktop on an Apple Silicon Mac, like in this example: ``` - FROM --platform=linux/amd64 mcr.microsoft.com/devcontainers/typescript-node:16 + FROM --platform=linux/amd64 mcr.microsoft.com/devcontainers/typescript-node:24 ``` See [Issue #219](https://github.com/devcontainers/features/issues/219) for more details. @@ -47,8 +47,23 @@ This docker-in-docker Dev Container Feature is roughly based on the [official do This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. +Debian Trixie (13) does not include moby-cli and related system packages, so the feature cannot install with "moby": "true". To use this feature on Trixie, please set "moby": "false" or choose a different base image (for example, Ubuntu 24.04). + +Ubuntu 26.04 (Resolute) does not currently have moby packages available, so the feature cannot install with "moby": "true". To use this feature on Resolute, please set "moby": "false". Additionally, the kernel on Ubuntu 26.04 no longer supports legacy iptables NAT tables, so the feature automatically falls back to `iptables-nft` when `iptables-legacy` is not functional. + `bash` is required to execute the `install.sh` script. +## Persisted state + +This Feature mounts two named Docker volumes into the dev container so that the daemons have writable, non-overlay storage for their state: + +* `dind-var-lib-docker-${devcontainerId}` → `/var/lib/docker` +* `dind-var-lib-containerd-${devcontainerId}` → `/var/lib/containerd` + +The `/var/lib/containerd` mount is required when the dev container's root filesystem is itself an overlayfs mount (the default in Kubernetes / containerd-backed hosts, GitHub Codespaces, and Docker with the containerd image store enabled). Without it, the standalone `containerd` started by this Feature would place its overlayfs snapshotter data on an overlay rootfs, causing overlay-on-overlay mounts to fail with `invalid argument`. See [issue #1639](https://github.com/devcontainers/features/issues/1639) for background. + +Because both volumes are scoped to `${devcontainerId}`, each dev container gets its own state and rebuilds preserve images and snapshots. Removing the dev container does not automatically remove these volumes; clean them up with `docker volume rm` if you want to reclaim space. + --- diff --git a/src/docker-outside-of-docker/README.md b/src/docker-outside-of-docker/README.md index 3b37028e2..3b7e9b4cc 100644 --- a/src/docker-outside-of-docker/README.md +++ b/src/docker-outside-of-docker/README.md @@ -22,7 +22,7 @@ Re-use the host docker socket, adding the Docker CLI to a container. Feature inv | mobyBuildxVersion | Install a specific version of moby-buildx when using Moby | string | latest | | dockerDashComposeVersion | Compose version to use for docker-compose (v1 or v2 or none or latest) | string | latest | | installDockerBuildx | Install Docker Buildx | boolean | true | -| installDockerComposeSwitch | Install Compose Switch (provided docker compose is available) which is a replacement to the Compose V1 docker-compose (python) executable. It translates the command line into Compose V2 docker compose then runs the latter. | boolean | true | +| installDockerComposeSwitch | Install Compose Switch (provided docker compose is available) which is a replacement to the Compose V1 docker-compose (python) executable. It translates the command line into Compose V2 docker compose then runs the latter. | boolean | false | | socketPath | Path where the Docker socket is mounted inside the container. For rootless Docker, override the mount in devcontainer.json to map your host socket to this path. | string | /var/run/docker-host.sock | ## Customizations @@ -37,30 +37,6 @@ Re-use the host docker socket, adding the Docker CLI to a container. Feature inv - The host and the container must be running on the same chip architecture. You will not be able to use it with an emulated x86 image with Docker Desktop on an Apple Silicon Mac, for example. - This approach does not currently enable bind mounting the workspace folder by default, and cannot support folders outside of the workspace folder. Consider whether the [Docker-in-Docker Feature](../docker-in-docker) would better meet your needs given it does not have this limitation. -## Rootless Docker Support - -By default, this feature expects the Docker socket at `/var/run/docker.sock` on the host, which works for standard (root) Docker installations. For **rootless Docker** setups where the socket is located at `/run/user/$UID/docker.sock` or `$XDG_RUNTIME_DIR/docker.sock`, you need to override the mount in your `devcontainer.json`: - -```json -{ - "features": { - "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {} - }, - "mounts": [ - { - "source": "/run/user/1000/docker.sock", - "target": "/var/run/docker-host.sock", - "type": "bind" - } - ] -} -``` - -**Notes:** -- Replace `1000` with your actual user ID (run `id -u` to find it) -- The feature will automatically detect the socket at `/var/run/docker-host.sock` -- Your custom mount will override the feature's default mount - ## Supporting bind mounts from the workspace folder A common question that comes up is how you can use `bind` mounts from the Docker CLI from within the a dev container using this Feature (e.g. via `-v`). If you cannot use the [Docker-in-Docker Feature](../docker-in-docker), the only way to work around this is to use the **host**'s folder paths instead of the container's paths. There are 2 ways to do this @@ -115,6 +91,18 @@ services: This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. +Debian Trixie (13) does not include moby-cli and related system packages, so the feature cannot install with "moby": "true". To use this feature on Trixie, please set "moby": "false" or choose a different base image (for example, Ubuntu 24.04). + +Ubuntu 26.04 LTS (Resolute) does not have moby-cli packages available, so the feature only supports installation with `"moby": false`. To use this feature on Ubuntu 26.04, set `"moby": false` in your feature configuration: + +```json +"features": { + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": { + "moby": false + } +} +``` + `bash` is required to execute the `install.sh` script. diff --git a/src/dotnet/README.md b/src/dotnet/README.md index ceb9c544f..92fc7c8f3 100644 --- a/src/dotnet/README.md +++ b/src/dotnet/README.md @@ -40,9 +40,10 @@ Installing only the latest .NET SDK version (the default). Installing an additional SDK version. Multiple versions can be specified as comma-separated values. -``` json +``` jsonc "features": { "ghcr.io/devcontainers/features/dotnet:2": { + "version": "latest", // (this can be omitted) "additionalVersions": "lts" } } @@ -101,12 +102,43 @@ Installing .NET workloads. Multiple workloads can be specified as comma-separate } ``` +Installing prerelease builds. Supports `preview` and `daily` suffixes. + +``` json +"features": { + "ghcr.io/devcontainers/features/dotnet:2": { + "version": "10.0-preview", + "additionalVersions": "10.0.1xx-daily", + "dotnetRuntimeVersions": "10.0-daily", + "aspNetCoreRuntimeVersions": "10.0-daily" + } +} +``` + ## OS Support This Feature should work on recent versions of Debian/Ubuntu-based distributions with the `apt` package manager installed. `bash` is required to execute the `install.sh` script. +## Tab completions + +When using .NET SDK 10 or newer, tab completions for the `dotnet` CLI are automatically installed for bash, zsh, and fish. The completion scripts are placed in the standard system-wide directories so they work for all users: + +- **Bash**: `/usr/share/bash-completion/completions/dotnet` +- **Zsh**: `/usr/share/zsh/site-functions/_dotnet` +- **Fish**: `/usr/share/fish/vendor_completions.d/dotnet.fish` + +To disable this, set `tabCompletions` to `false`: + +``` json +"features": { + "ghcr.io/devcontainers/features/dotnet:2": { + "tabCompletions": false + } +} +``` + --- diff --git a/src/github-cli/README.md b/src/github-cli/README.md index 0da722f69..d35d1b5c2 100644 --- a/src/github-cli/README.md +++ b/src/github-cli/README.md @@ -1,3 +1,4 @@ + # GitHub CLI (github-cli) Installs the GitHub CLI. Auto-detects latest version and installs needed dependencies. @@ -12,11 +13,11 @@ Installs the GitHub CLI. Auto-detects latest version and installs needed depende ## Options -| Options Id | Description | Type | Default Value | -| -------------------------------- | --------------------------------------------------------------------------------------------------- | ------- | ------------- | -| version | Select version of the GitHub CLI, if not latest. | string | latest | -| installDirectlyFromGitHubRelease | - | boolean | true | -| extensions | Comma-separated list of GitHub CLI extensions to install (e.g. 'dlvhdr/gh-dash,github/gh-copilot'). | string | | +| Options Id | Description | Type | Default Value | +|-----|-----|-----|-----| +| version | Select version of the GitHub CLI, if not latest. | string | latest | +| installDirectlyFromGitHubRelease | - | boolean | true | +| extensions | Comma-separated list of GitHub CLI extensions to install (e.g. 'dlvhdr/gh-dash,github/gh-copilot'). | string | - | ## OS Support @@ -24,6 +25,11 @@ This Feature should work on recent versions of Debian/Ubuntu-based distributions `bash` is required to execute the `install.sh` script. +## Extensions + +If you set the `extensions` option, the feature will run `gh extension install` for each entry (comma-separated). Extensions are installed for the most appropriate non-root user (based on `USERNAME` / `_REMOTE_USER`), with a fallback to `root`. + + --- -_Note: This file was auto-generated from the [devcontainer-feature.json](https://github.com/devcontainers/features/blob/main/src/github-cli/devcontainer-feature.json). Add additional notes to a `NOTES.md`._ +_Note: This file was auto-generated from the [devcontainer-feature.json](https://github.com/devcontainers/features/blob/main/src/github-cli/devcontainer-feature.json). Add additional notes to a `NOTES.md`._ diff --git a/src/kubectl-helm-minikube/README.md b/src/kubectl-helm-minikube/README.md index 81ce8c574..9398ff42f 100644 --- a/src/kubectl-helm-minikube/README.md +++ b/src/kubectl-helm-minikube/README.md @@ -18,6 +18,7 @@ Installs latest version of kubectl, Helm, and optionally minikube. Auto-detects | version | Select or enter a Kubernetes version to install | string | latest | | helm | Select or enter a Helm version to install | string | latest | | minikube | Select or enter a Minikube version to install | string | latest | +| kubectlFallbackVersion | Fallback kubectl version to use when the latest stable version cannot be fetched | string | v1.35.1 | ## Ingress and port forwarding diff --git a/src/node/README.md b/src/node/README.md index 028b47401..4e660cbc0 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -1,5 +1,5 @@ -# Node.js (via nvm), yarn and pnpm (node) +# Node.js (via nvm), yarn and pnpm. (node) Installs Node.js, nvm, yarn, pnpm, and needed dependencies. @@ -11,15 +11,6 @@ Installs Node.js, nvm, yarn, pnpm, and needed dependencies. } ``` -```json -"features": { - "ghcr.io/devcontainers/features/node:2": { - "version": "20", - "npmVersion": "10.8.0" - } -} -``` - ## Options | Options Id | Description | Type | Default Value | @@ -66,6 +57,30 @@ Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and Rocky Linux distributi `bash` is required to execute the `install.sh` script. +## Pre-bundled items + +> [!NOTE] +> Beyond the core install, this feature also sets up a few items by default for convenience — recommended VS Code extensions (such as a linter) and supporting tools. This is intentional behavior shared across features in this repository. + +## Excluding pre-bundled items + +Exclude a bundled **VS Code extension** by prefixing its ID with `-`, or (when supported by a feature option) disable a bundled **tool** by setting its version option to `none` (for example, `pnpmVersion`: `none`): + +```json +{ + "features": { + "ghcr.io/devcontainers/features/node:2": { + "pnpmVersion": "none" + } + }, + "customizations": { + "vscode": { + "extensions": [ "-dbaeumer.vscode-eslint" ] + } + } +} +``` + --- diff --git a/src/nvidia-cuda/README.md b/src/nvidia-cuda/README.md index 7982cfc9e..4154e6c11 100644 --- a/src/nvidia-cuda/README.md +++ b/src/nvidia-cuda/README.md @@ -7,7 +7,7 @@ Installs shared libraries for NVIDIA CUDA. ```json "features": { - "ghcr.io/devcontainers/features/nvidia-cuda:2": {} + "ghcr.io/devcontainers/features/nvidia-cuda:3": {} } ``` @@ -19,7 +19,7 @@ Installs shared libraries for NVIDIA CUDA. | installCudnnDev | Additionally install CUDA Deep Neural Network (cuDNN) development libraries and headers | boolean | false | | installNvtx | Additionally install NVIDIA Tools Extension (NVTX) | boolean | false | | installToolkit | Additionally install NVIDIA CUDA Toolkit | boolean | false | -| cudaVersion | Version of CUDA to install | string | 11.8 | +| cudaVersion | Version of CUDA to install | string | 12.5 | | cudnnVersion | Version of cuDNN to install | string | automatic | ## Compatibility diff --git a/src/powershell/README.md b/src/powershell/README.md index f09ac1f02..3a5d71c14 100644 --- a/src/powershell/README.md +++ b/src/powershell/README.md @@ -16,7 +16,7 @@ Installs PowerShell along with needed dependencies. Useful for base Dockerfiles | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| | version | Select or enter a version of PowerShell. | string | latest | -| modules | Optional comma separated list of PowerShell modules to install. If you need to install a specific version of a module, use '==' to specify the version (e.g. 'az.resources==2.5.0') | string | - | +| modules | Optional comma separated list of PowerShell modules to install. If you need to install a specific version of a module, use '==' to specify the version (e.g. 'az.resources==2.5.0'). | string | - | | powershellProfileURL | Optional (publicly accessible) URL to download PowerShell profile. | string | - | ## Customizations diff --git a/src/ruby/README.md b/src/ruby/README.md index 351ffe906..6b513bcd4 100644 --- a/src/ruby/README.md +++ b/src/ruby/README.md @@ -32,6 +32,13 @@ This Feature supports Linux images that ship one of the following package manage `bash` is required to execute the `install.sh` script. +## Layout + +- Ruby is installed under `/usr/local/rubies/` by ruby-build. +- The default Ruby is exposed via the `/usr/local/rubies/current` symlink, which is placed on the `PATH` through `containerEnv`. +- `ruby-build` itself is cloned to `/usr/local/share/ruby-build` and symlinked into `/usr/local/bin/ruby-build` so additional versions can be installed later. +- A shared `ruby` group owns `/usr/local/rubies`; the configured non-root user is added to it so `gem install` can write into the active Ruby tree without `sudo`. + --- diff --git a/src/sshd/README.md b/src/sshd/README.md index f4215b391..0ca3cc1dd 100644 --- a/src/sshd/README.md +++ b/src/sshd/README.md @@ -15,8 +15,8 @@ Adds a SSH server into a container so that you can use an external terminal, sft | Options Id | Description | Type | Default Value | |-----|-----|-----|-----| -| gatewayPorts | Enable other hosts in the same network to connect to the forwarded ports | string | no | version | Currently unused. | string | latest | +| gatewayPorts | Enable other hosts in the same network to connect to the forwarded ports | string | no | ## Usage