ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

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.

Diagram comparing dev versus production containers

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

© . This site is unofficial and not affiliated with Microsoft.