Die Dev Container CLI
18. Mai 2022 von Brigit Murtaugh, @BrigitMurtaugh
Zusammenfassung
Eine konsistente Umgebung überall mit der Dev Container CLI
Die Development Container Teams von Microsoft und GitHub freuen sich, eine Open-Source-Kommandozeilenschnittstelle (CLI) als Teil der neuen Development Containers Specification zu veröffentlichen. Wir freuen uns über Ihr Feedback in diesem Issue oder in neuen Issues und Pull Requests im devcontainers/cli Repository.
Konsistenz = Freude
Eine konsistente, vorhersehbare Umgebung ist der Schlüssel zu einer produktiven und angenehmen Softwareentwicklungserfahrung.
Container wurden historisch verwendet, um Apps bei der Bereitstellung zu standardisieren, aber es gibt eine großartige Gelegenheit, zusätzliche Szenarien zu unterstützen, einschließlich Continuous Integration (CI), Testautomatisierung und voll funktionsfähiger Entwicklungsumgebungen. Ein Development Container bietet diese voll funktionsfähige Entwicklungsumgebung und stellt sicher, dass Ihr Projekt die benötigten Tools und Software hat, egal ob es komplex und verteilt ist oder nur wenige Anforderungen hat.

Dev Container werden seit der Ankündigung der Dev Containers-Erweiterung im Jahr 2019 in Visual Studio Code unterstützt, und seit kurzem auch in GitHub Codespaces. Diese Unterstützung basiert auf devcontainer.json, einem strukturierten JSON mit Kommentaren (jsonc) Metadatenformat zur Konfiguration einer containerisierten Umgebung.
Da die Containerisierung von Produktions-Workloads immer üblicher wird, sind Dev Container für Szenarien jenseits von VS Code breit nützlich geworden. Wir freuen uns, bekannt zu geben, dass die Arbeit an der Development Containers Specification begonnen hat, die es jedem in jedem Tool ermöglicht, eine konsistente Entwicklungsumgebung zu konfigurieren. Darüber hinaus freuen wir uns heute, eine Hauptkomponente dieser Spezifikation mitteilen zu können, die Sie jetzt ausprobieren können: die dev container CLI.
Was ist die Dev Container CLI?
Die Dev Container CLI ist eine Referenzimplementierung für die Dev Container Spezifikation.
Wenn Tools wie VS Code und Codespaces eine devcontainer.json-Datei im Projekt eines Benutzers erkennen, verwenden sie eine CLI, um einen Dev Container zu konfigurieren. Wir haben diese CLI nun als Referenzimplementierung geöffnet, sodass einzelne Benutzer und andere Tools devcontainer.json Metadaten einlesen und Dev Container daraus erstellen können.
Diese CLI kann entweder direkt verwendet oder in Produkterlebnisse integriert werden, ähnlich wie sie heute in Dev Containers und Codespaces integriert ist. Sie unterstützt derzeit sowohl eine einfache Einzelcontainer-Option als auch die Integration mit Docker Compose für Multi-Container-Szenarien.
Die CLI ist zur Überprüfung in einem neuen devcontainers/cli Repository verfügbar und Sie können mehr über ihre Entwicklung in diesem Issue im Spec-Repo lesen.
Wie kann ich es ausprobieren?
Wir würden uns freuen, wenn Sie die Dev Container CLI ausprobieren und uns Ihre Meinung mitteilen. Sie können sie schnell und in wenigen einfachen Schritten ausprobieren, entweder durch Installation des npm-Pakets oder durch Erstellung des CLI-Repositorys aus den Quellen.
Mehr über das Erstellen aus Quellen erfahren Sie im README des CLI-Repositorys. In diesem Beitrag konzentrieren wir uns auf die Verwendung des npm-Pakets.
Um das npm-Paket zu installieren, benötigen Sie Python, Node.js (Version 14 oder höher) und C/C++ zur Erstellung einer der Abhängigkeiten. Das Wiki How to Contribute von VS Code enthält Details zu den empfohlenen Toolsets.
npm install
npm install -g @devcontainers/cli
Überprüfen Sie, ob Sie die CLI ausführen und ihren Hilfetext sehen können
devcontainer <command>
Commands:
devcontainer up Create and run dev container
devcontainer build [path] Build a dev container image
devcontainer run-user-commands Run user commands
devcontainer read-configuration Read configuration
devcontainer exec <cmd> [args..] Execute a command on a running dev container
Options:
--help Show help [boolean]
--version Show version number [boolean]
Probieren Sie die CLI aus
Sobald Sie die CLI haben, können Sie sie mit einem Beispielprojekt ausprobieren, wie diesem Rust-Beispiel.
Klonen Sie das Rust-Beispiel auf Ihren Rechner und starten Sie einen Dev Container mit dem up-Befehl der CLI
git clone https://github.com/microsoft/vscode-remote-try-rust
devcontainer up --workspace-folder <path-to-vscode-remote-try-rust>
Dies lädt das Container-Image aus einer Container-Registry herunter und startet den Container. Ihr Rust-Container sollte nun laufen
[88 ms] dev-containers-cli 0.1.0.
[165 ms] Start: Run: docker build -f /home/node/vscode-remote-try-rust/.devcontainer/Dockerfile -t vsc-vscode-remote-try-rust-89420ad7399ba74f55921e49cc3ecfd2 --build-arg VARIANT=bullseye /home/node/vscode-remote-try-rust/.devcontainer
[+] Building 0.5s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 38B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for mcr.microsoft.com/vscode/devcontainers/r 0.4s
=> CACHED [1/1] FROM mcr.microsoft.com/vscode/devcontainers/rust:1-bulls 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:39873ccb81e6fb613975e11e37438eee1d49c963a436d 0.0s
=> => naming to docker.io/library/vsc-vscode-remote-try-rust-89420ad7399 0.0s
[1640 ms] Start: Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount type=bind,source=/home/node/vscode-remote-try-rust,target=/workspaces/vscode-remote-try-rust -l devcontainer.local_folder=/home/node/vscode-remote-try-rust --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --entrypoint /bin/sh vsc-vscode-remote-try-rust-89420ad7399ba74f55921e49cc3ecfd2-uid -c echo Container started
Container started
{"outcome":"success","containerId":"f0a055ff056c1c1bb99cc09930efbf3a0437c54d9b4644695aa23c1d57b4bd11","remoteUser":"vscode","remoteWorkspaceFolder":"/workspaces/vscode-remote-try-rust"}
Sie können dann Befehle in diesem Dev Container ausführen
devcontainer exec --workspace-folder <path-to-vscode-remote-try-rust> cargo run
Dies kompiliert und führt das Rust-Beispiel aus, wobei Folgendes ausgegeben wird:
[33 ms] dev-containers-cli 0.1.0.
Compiling hello_remote_world v0.1.0 (/workspaces/vscode-remote-try-rust)
Finished dev [unoptimized + debuginfo] target(s) in 1.06s
Running `target/debug/hello_remote_world`
Hello, VS Code Dev Containers!
{"outcome":"success"}
Glückwunsch, Sie haben gerade die Dev Container CLI ausgeführt und sie in Aktion gesehen!
Diese Schritte sind auch im README des CLI-Repositorys aufgeführt.
Wie kann ich mich beteiligen?
Ihr Feedback ist unglaublich hilfreich bei der Gestaltung und Erweiterung der Spezifikation, und wir würden uns sehr über Ihr Feedback zur bisherigen CLI freuen. Bitte schauen Sie sich die CLI an und lassen Sie uns wissen, was Sie denken. Wir haben ein Issue eröffnet, speziell für Leute, die Kommentare und Fragen hinterlassen können, und Sie können auch neue Issues oder PRs im Repository eröffnen, genau wie bei anderen Open-Source-Projekten.
Die CLI und die gesamte Spezifikation sind in aktiver Entwicklung (die Spezifikation ist noch in Arbeit und wurde noch nicht veröffentlicht), also bleiben Sie dran für spannende neue Fortschritte. Wir freuen uns über Ihr Feedback zur bisherigen CLI und werden weiterhin Updates darüber geben, was Sie ausprobieren können und wann, z. B. wann die Spezifikation verfügbar sein wird.
Wir sind unglaublich begeistert von der Zukunft der containerbasierten Entwicklung und können es kaum erwarten, Ihr Feedback zu hören. Wir freuen uns darauf, ein allgegenwärtiges, produktives Format über Tools und Benutzer hinweg bereitzustellen.
Viel Spaß beim Programmieren!
Brigit Murtaugh, @BrigitMurtaugh