Ein Devcontainer dient dem Zwecke, eine vom Host-System unabhängige Entwicklungsumgebung aufzusetzen. Der Devcontainer-Standard vereinfacht das.
Es gibt beispielsweise Devcontainer-Features, das sind Installier-Skripte z.B. für die Azure CLI oder Terraform CLI.
Devcontainer-base-images, basierend auf Debian, gibt es für z.B. Python, C++, .NET und Node. Diese sind für Devcontainer optimiert und nicht für Production-images von Apps geeignet.
Alle gängigen IDEs implementieren den Devcontainer-Standard. Wenn sie eine Devcontainer-Konfiguration im geöffneten Ordner entdecken, geschieht:
Da Microsoft den Devcontainer-Standard gestartet hat und weiterentwickelt (Open source), ist VS Code und VS Code Workspaces hier besonders reibungslos.
Weitere hilfreiche Infos im offiziellen Dokument Developing inside a Container.
Devpod.sh empfiehlt sich ebenfalls, z.B. wenn man Neovim als Editor verwendet.
Es ist zu empfehlen, Docker Desktop zu installieren - gute Docker-GUI, installiert auch Docker in WSL.
Der OpenSSH-Windows-Dienst muss laufen, damit VS Code die ssh-keys korrekt in den Devcontainer 'forwarden' kann.
Aktuell wird dieser geupdated, nachdem er längere Zeit 'brach lag' und unbenutzt war; wegen fehlender Infos zum Setup eines Test-Servers und der notwendigen Informationen und Tools zum erfolgreichen Ausführen des Test-unstable.yaml-Playbooks ist der Devcontainer noch unvollständig.
Ziel ist also: Man kann sich mit dem Devcontainer wie auch immer verbinden und 'ansible-playbook unstable.yaml ...' aufrufen, und z.B. lokal im Devcontainer dieses Playbook ausführen und (mit 'hosts: localhost') die diversen Dienste lokal aufsetzen.
Das ist auch praktisch, da ein Devcontainer ohne Nebenwirkungen zum eigentlichen Code einfach wieder 'abgerissen' und neu aufgesetzt werden kann.