An einen laufenden Container anhängen
Visual Studio Code kann Container für Sie erstellen und starten, aber das passt möglicherweise nicht zu Ihrem Workflow und Sie möchten VS Code möglicherweise an einen bereits laufenden Docker-Container "anhängen" – unabhängig davon, wie er gestartet wurde. Sobald Sie angehängt sind, können Sie Erweiterungen installieren, bearbeiten und debuggen, wie Sie es tun können, wenn Sie einen Ordner in einem Container mit devcontainer.json öffnen.
An einen Docker-Container anhängen
Um einen Docker-Container anzuhängen, wählen Sie entweder Dev Containers: Attach to Running Container... aus der Befehlspalette (F1) oder verwenden Sie den Remote Explorer in der Aktivitätsleiste und wählen Sie in der Ansicht Container die Inline-Aktion An Container anhängen für den Container aus, zu dem Sie eine Verbindung herstellen möchten.

Hinweis: Bei der Verwendung von Alpine Linux-Containern funktionieren einige Erweiterungen aufgrund von
glibc-Abhängigkeiten im nativen Code der Erweiterung möglicherweise nicht.
Konfigurationsdateien für angehängte Container
VS Code unterstützt Konfigurationsdateien auf Image- oder Containernamen-Ebene, um die Einrichtung zu beschleunigen, wenn Sie wiederholt eine Verbindung zu einem bestimmten Docker-Container herstellen. Sobald Sie angehängt sind, wird jedes Mal, wenn Sie einen Ordner öffnen, eine Erweiterung installieren oder einen Port weiterleiten, eine lokale imagespezifische Konfigurationsdatei automatisch aktualisiert, um Ihre Einstellungen zu speichern. Wenn Sie sich also erneut anhängen, ist alles wieder am richtigen Ort.
-
Standardmäßig wird eine Konfiguration auf Image-Ebene verwendet. Um diese nach dem Anhängen anzuzeigen oder zu aktualisieren, wählen Sie Dev Containers: Open Container Configuration File aus der Befehlspalette (F1).
-
Wenn Sie Ihre Konfiguration lieber an einen Containernamen binden möchten, wählen Sie nach dem Anhängen Dev Containers: Open Named Configuration File aus der Befehlspalette (F1). Alle zukünftigen Aktualisierungen gelten dann für diese Namenskonfiguration anstelle der Image-Ebene.
Beide Dateien unterstützen eine Teilmenge der devcontainer.json-Eigenschaften
{
// Default path to open when attaching to a new container.
"workspaceFolder": "/path/to/code/in/container/here",
// Set *default* container specific settings.json values on container create.
"settings": {
"terminal.integrated.defaultProfile.linux": "bash"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": ["dbaeumer.vscode-eslint"],
// An array port numbers to forward
"forwardPorts": [8000],
// Container user VS Code should use when connecting
"remoteUser": "vscode",
// Set environment variables for VS Code and sub-processes
"remoteEnv": { "MY_VARIABLE": "some-value" }
}
Siehe die Referenz zur Konfiguration von angehängten Containern für eine vollständige Liste der Eigenschaften und ihrer Verwendungszwecke.
Sobald diese gespeichert sind, werden diese Eigenschaften verwendet, um die Umgebung zu konfigurieren, wenn Sie das nächste Mal einen Container mit demselben Image / Namen zum ersten Mal öffnen.
Tipp: Wenn mit Ihrer Konfiguration etwas nicht stimmt, können Sie diese auch bearbeiten, ohne am Container angehängt zu sein. Wählen Sie dazu Dev Containers: Open Attached Container Configuration File... aus der Befehlspalette (F1) und wählen Sie dann das Image / den Containernamen aus der angezeigten Liste aus.
Schließlich können Sie, wenn Sie Erweiterungen haben, die unabhängig vom angehängten Container installiert werden sollen, settings.json aktualisieren, um eine Liste der Erweiterungen anzugeben, die immer installiert werden sollten.
Referenz zur Konfiguration von angehängten Containern
Konfigurationsdateien für angehängte Container ähneln devcontainer.json und unterstützen eine Teilmenge seiner Eigenschaften.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
workspaceFolder |
string | Legt den Standardpfad fest, den VS Code beim Verbinden mit dem Container öffnen soll (oft der Pfad zu einem Volume-Mount, wo sich der Quellcode im Container befindet). Standardmäßig nicht festgelegt (ein leeres Fenster wird geöffnet). |
extensions |
array | Ein Array von Erweiterungs-IDs, das die Erweiterungen angibt, die im Container installiert werden sollen, wenn dieser erstellt wird. Standardmäßig []. |
settings |
object | Fügt Standardwerte für settings.json in eine container-/maschinenspezifische Einstellungsdatei ein. |
forwardPorts |
array | Eine Liste von Ports, die vom Inneren des Containers zur lokalen Maschine weitergeleitet werden sollen. |
portsAttributes |
object | Objekt, das eine Portnummer, einen Wert vom Typ "host:port", einen Bereich oder einen regulären Ausdruck einer Reihe von Standardoptionen zuordnet. Weitere Informationen zu verfügbaren Optionen finden Sie unter Portattribute. Zum Beispiel"portsAttributes": {"3000": {"label": "Application port"}} |
otherPortsAttributes |
object | Standardoptionen für Ports, Portbereiche und Hosts, die nicht mit portsAttributes konfiguriert sind. Weitere Informationen zu verfügbaren Optionen finden Sie unter Portattribute. Zum Beispiel"otherPortsAttributes": {"onAutoForward": "silent"} |
remoteEnv |
object | Eine Reihe von Schlüssel-Wert-Paaren, die Umgebungsvariablen für VS Code (oder Unterprozesse wie Terminals) festlegen oder überschreiben, jedoch nicht für den Container als Ganzes. Umgebungsvariablen und vordefinierte Variablen können in den Werten referenziert werden. Zum Beispiel: "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path" } |
remoteUser |
string | Überschreibt den Benutzer, unter dem VS Code im Container ausgeführt wird (einschließlich Unterprozesse wie Terminals, Tasks oder Debugging). Standardmäßig wird der Benutzer verwendet, unter dem der Container als Ganzes läuft (oft root). |
userEnvProbe |
enum | Gibt die Art der Shell an, die verwendet werden soll, um Benutzerumgebungsvariablen zu "ermitteln", die in VS Code oder anderen verbundenen Toolprozessen enthalten sein sollen: none, interactiveShell, loginShell oder loginInteractiveShell (Standard). Die spezifische Shell, die verwendet wird, basiert auf der Standardshell des Benutzers (typischerweise bash). Zum Beispiel enthalten Bash-interaktive Shells typischerweise Variablen, die in /etc/bash.bashrc und ~/.bashrc gesetzt sind, während Login-Shells normalerweise Variablen aus /etc/profile und ~/.profile enthalten. Das Setzen dieser Eigenschaft auf loginInteractiveShell ruft Variablen aus allen vier Dateien ab. |
postAttachCommand |
string, array |
Eine Befehlszeichenfolge oder eine Liste von Befehlsargumenten, die ausgeführt werden sollen, nachdem VS Code an den Container angehängt wurde. Verwenden Sie && in einer Zeichenfolge, um mehrere Befehle auszuführen. Zum Beispiel "yarn install" oder "apt-get update && apt-get install -y curl". Die Array-Syntax ["yarn", "install"] ruft den Befehl (in diesem Fall yarn) direkt auf, ohne eine Shell zu verwenden. Standardmäßig nicht festgelegt.Beachten Sie, dass die Array-Syntax den Befehl ohne Shell ausführt. Sie können mehr erfahren über die Formatierung von Zeichenfolgen- vs. Array-Eigenschaften. |
Variablen in Konfigurationsdateien für angehängte Container
Variablen können in bestimmten Zeichenfolgenwerten in Konfigurationsdateien für angehängte Container im folgenden Format referenziert werden: ${variableName}. Die folgende Tabelle listet die verfügbaren Variablen auf, die Sie verwenden können.
| Variable | Eigenschaften | Beschreibung |
|---|---|---|
${containerEnv:VAR_NAME} |
remoteEnv |
Wert einer vorhandenen Umgebungsvariable im Container (in diesem Fall VAR_NAME), sobald dieser gestartet und betriebsbereit ist. Zum Beispiel: "remoteEnv": { "PATH": "${containerEnv:PATH}:/some/other/path" } |
An einen Container in einem Kubernetes-Cluster anhängen
Um einen Container in einem Kubernetes-Cluster anzuhängen, wählen Sie Dev Containers: Attach to Running Kubernetes Container... aus der Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)). Alternativ installieren Sie zuerst die Kubernetes-Erweiterung und kubectl zusammen mit der Dev Containers-Erweiterung. Wählen Sie dann den Kubernetes-Explorer aus der Aktivitätsleiste und erweitern Sie den Cluster und das Pod, in dem sich der Container befindet, an den Sie sich anhängen möchten. Klicken Sie schließlich mit der rechten Maustaste auf den Container und wählen Sie Visual Studio Code anhängen aus dem Kontextmenü.
Hinweis: Konfigurationsdateien für angehängte Container werden für Container in einem Kubernetes-Cluster noch nicht unterstützt.

Nächste Schritte
- Dev Container erstellen – Erstellen Sie einen benutzerdefinierten Container für Ihre Arbeitsumgebung.
- Fortgeschrittene Container – Finden Sie Lösungen für fortgeschrittene Container-Szenarien.
- devcontainer.json-Referenz – Überprüfen Sie das
devcontainer.json-Schema.