# Offline: Dev Container

Quelle: https://inf.zone/extras/setup/devcontainer-local/

Diese Anleitung basiert auf der Anleitung zum [Setup von Visual Studio Code bei CS50](https://cs50.readthedocs.io/cs50.dev/). Dort finden Sie ausführlichere Erläuterungen.

- [>> Zur Video-Anleitung für Dev Container (Windows)](https://inf.zone/extras/setup/devcontainer-local-video)

**Wozu das Ganze?**

Die Werkzeuge für die Übungen – Compiler, `make`, `check50` – laufen unter Linux. Damit Sie kein Linux installieren müssen, startet das Programm Docker ein kleines, fertig eingerichtetes Linux als Container auf Ihrem Rechner. Unter Windows braucht Docker dafür das WSL. VS Code verbindet sich anschließend mit dem Container: Sie arbeiten im gewohnten Editor, die Befehle im Terminal laufen aber im Container. Diese Kombination heißt Dev Container.

Die Anleitung beschreibt **Windows**, **macOS** und **Linux**.

## Einrichtung

**Windows:**

Unter Windows 11 erledigt ein Skript von uns die Einrichtung. Unter Windows 10 läuft es nicht; nehmen Sie dort die Online-Variante [GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud/). Sie brauchen etwa 15 bis 30 Minuten, etwa 20 GB freien Speicherplatz, eine Internetverbindung, am besten das Netzteil am Laptop und meist einen Neustart zwischendurch. Was schon auf Ihrem Rechner ist, etwa VS Code, nutzt das Skript weiter. Setzen Sie sich ein Lesezeichen auf diese Seite: Nach dem Neustart brauchen Sie sie wieder.

Den ganzen Ablauf zeigt ein [Video (6 Minuten)](https://inf.zone/extras/setup/devcontainer-local-video/).

Hat Ihr Laptop einen ARM-Prozessor (etwa Snapdragon; unter „Einstellungen > System > Info“ steht dann bei „Systemtyp“ „ARM-basierter Prozessor“), fragt das Skript nach, ob Sie hier einrichten wollen. Docker lädt dann die ARM-Fassung der Kursumgebung. Auf Laptops mit Snapdragon haben wir sie noch nicht selbst ausprobiert; klappt etwas nicht, etwa der Debugger, weichen Sie auf [GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud/) aus und sagen uns im Tutorium Bescheid.

1. **PowerShell öffnen.** Klicken Sie auf Start (das Windows-Symbol unten), tippen Sie `PowerShell` und klicken Sie auf „Windows PowerShell“ (nicht „ISE“). Es öffnet sich ein Fenster mit Text, in das Sie Befehle eingeben können. Wählen Sie nicht „Als Administrator ausführen“; wo Rechte nötig sind, fragt Windows selbst.
2. **Zeile einfügen.** Fahren Sie mit der Maus über den grauen Kasten unten; rechts darin erscheint ein Knopf zum Kopieren. Klicken Sie ihn an. Klicken Sie dann mit der rechten Maustaste in das PowerShell-Fenster (oder drücken Sie `Strg + V`); damit fügen Sie die Zeile ein. Drücken Sie Enter.

   Der rote Kasten erklärt, warum man so eine Zeile nur aus vertrauenswürdiger Quelle ausführt. Diese hier stammt von uns, von `inf.zone`; Sie können sie ausführen. Was das Skript tut, können Sie vorher [ansehen](https://inf.zone/setup-windows.ps1).

   > [!CAUTION]
   > **Nie wahllos Skripte aus dem Internet laden und ausführen.** Eine Zeile wie diese lädt ein Programm aus dem Internet und reicht es sofort zum Ausführen weiter (`| bash`, `| iex`), mit allen Rechten Ihres Benutzerkontos und ohne dass Sie es vorher sehen. Wer Ihnen so eine Zeile unterschiebt, kann damit Ihre Dateien löschen, Passwörter mitlesen oder Schadsoftware einrichten. Führen Sie sie deshalb nur aus, wenn Sie der Quelle vertrauen, und genau so, wie sie dort steht: von dieser Seite (Adressen auf `inf.zone`) oder von der offiziellen Seite des Programms. Zeilen aus Foren, Chats, E-Mails, Videos oder von einer KI führen Sie nie ungeprüft aus.
   
   ```text
   irm https://inf.zone/setup-windows.ps1 | iex
   ```

   **Wenn Windows die Zeile blockiert**
   
   Es kann vorkommen, dass Microsoft Defender die Zeile für Schadsoftware hält. PowerShell meldet dann etwa „Dieses Skript enthält schädliche Inhalte und wurde von Ihrer Antivirensoftware blockiert“, oder Windows-Sicherheit meldet eine Bedrohung. Defender misstraut Zeilen, die ein Skript laden und sofort ausführen; bei unserer ist es ein Fehlalarm. Schalten Sie den Virenschutz trotzdem nicht aus. Speichern Sie das Skript stattdessen erst als Datei und führen Sie es dann aus: Kopieren Sie die beiden Zeilen unten, fügen Sie sie in das PowerShell-Fenster ein und drücken Sie Enter.
   
   ```text
   irm https://inf.zone/setup-windows.ps1 | Set-Content -Encoding UTF8 "$env:TEMP\setup-windows.ps1"
   powershell -ExecutionPolicy Bypass -File "$env:TEMP\setup-windows.ps1"
   ```
   
   Die erste Zeile speichert das Skript in Ihrem Ordner für temporäre Dateien, die zweite startet es; `-ExecutionPolicy Bypass` erlaubt das nur für diesen einen Aufruf. Weiter geht es mit Schritt 3. Sagt das Skript, Sie sollen die Zeile von der Website noch einmal ausführen, nehmen Sie wieder diese beiden Zeilen.
   
   Blockiert Windows auch das, richten Sie ohne Skript ein (zugeklappter Kasten am Ende dieses Tabs) oder nehmen Sie [GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud/), und sagen Sie uns im Tutorium Bescheid.
   

3. **Den Fragen folgen.** Das Skript zeigt der Reihe nach „Schritt 1 von 5“ bis „Schritt 5 von 5“ und fragt, wenn es etwas wissen muss. Zwischendurch laufen Ausgaben anderer Programme durch, teils auf Englisch; das ist normal. Gelbe Zeilen mit „WARNUNG“ sagen Ihnen, was zu tun ist.
   - Fragen mit `[j/n]` beantworten Sie mit einem Tastendruck: `j` für ja, `n` für nein, ohne Enter. Passiert beim Drücken nichts, klicken Sie einmal oben auf die Titelleiste des Fensters und drücken Sie die Taste noch einmal.
   - Fragt Windows, ob die App Änderungen an Ihrem Gerät vornehmen darf, klicken Sie auf „Ja“. Danach öffnet sich kurz ein zweites Fenster; lassen Sie beide offen.
   - Muss Windows neu starten, fragt das Skript „Jetzt neu starten?“. Speichern Sie vorher, was in anderen Programmen offen ist. Melden Sie sich danach wie gewohnt an; nach einigen Sekunden öffnet sich das Fenster von selbst wieder, und es geht weiter.
   - Für Linux (Ubuntu) legen Sie ein Konto an. Den Benutzernamen schreiben Sie klein, ohne Leer- und Sonderzeichen; den Vorschlag übernehmen Sie mit Enter. Das Passwort tippen Sie zweimal, jeweils mit Enter; statt der Zeichen erscheinen Sternchen. Nehmen Sie nicht Ihr Windows-Passwort und speichern Sie es, etwa in einem Passwortmanager; für die Übungen brauchen Sie es normalerweise nicht.
   - In einem Fenster legen Sie einen Ordner für Ihre Kursdateien an: Klicken Sie gleich auf „Neuen Ordner erstellen“, tippen Sie `inf`, drücken Sie Enter und klicken Sie auf „OK“. Nicht geeignet sind Downloads, Desktop, Dokumente und andere Ordner, die OneDrive synchronisiert; warnt das Skript, drücken Sie `n` und wählen Sie neu.

   Am Ende steht in Grün „Fertig.“ und die Frage „VS Code jetzt öffnen?“. Drücken Sie `j`: VS Code öffnet sich mit Ihrem Ordner. Weiter geht es mit Schritt 4; das PowerShell-Fenster können Sie dann schließen.
4. **Kursumgebung starten.** Fragt VS Code, ob Sie den Autoren der Dateien in diesem Ordner vertrauen, klicken Sie auf „Yes, I trust the authors“; den Ordner haben Sie ja selbst angelegt. Eine Willkommensseite von VS Code können Sie schließen. Unten rechts erscheint dann ein Hinweis: Klicken Sie dort auf „Reopen in Container“.

   Beim ersten Mal lädt VS Code die Kursumgebung herunter; das dauert einige Minuten. Unten rechts steht währenddessen etwa „Connecting to Dev Container“; schließen Sie VS Code in der Zeit nicht. Fertig ist es, wenn oben im Fenstertitel und links im Explorer „[Dev Container]“ steht.

   Ist der Hinweis schon verschwunden: Drücken Sie `Strg + Shift + P`, tippen Sie `Reopen in Container` und wählen Sie den Eintrag aus.

Weiter geht es mit [Erste Schritte in VS Code](#erste-schritte-in-vs-code). Ab jetzt öffnen Sie VS Code einfach wie jedes andere Programm; es startet die Kursumgebung von selbst wieder.

**Wenn etwas nicht klappt:** Meldet das Skript ein Problem, steht im Fenster, was zu tun ist. Führen Sie danach die Zeile von der Website einfach noch einmal aus; was schon erledigt ist, überspringt das Skript. Zeilen wie `your 131072x1 screen size is bogus. expect trouble` kommen von Ubuntu und sind harmlos, solange das Skript weiterläuft. Kommen Sie nicht weiter, fragen Sie Susi, den Chatbot der Kursseite (Knopf unten rechts), und kopieren Sie die Meldung aus dem Fenster in Ihre Frage. Hilft das nicht, bringen Sie ein Foto des Fensters ins Tutorium mit.

**Ohne Skript einrichten (mit Docker Desktop)**

So lief die Einrichtung unter Windows bisher. Sie brauchen sie nur, wenn Sie Docker Desktop schon benutzen oder das Skript bei Ihnen nicht durchläuft.

1. Legen Sie einen neuen Ordner für Ihre Kursdateien an, zum Beispiel `C:\Users\<Ihr Name>\inf`, nicht im Download-Ordner und nicht in einem Ordner, den OneDrive synchronisiert.
2. Öffnen Sie [inf.zone/devcontainer.json](https://inf.zone/devcontainer.json) im Browser und speichern Sie die Datei mit `Strg + S` in diesem Ordner. Der Dateiname muss genau **`.devcontainer.json`** lauten, mit einem Punkt am Anfang. Achten Sie darauf, dass nicht `.devcontainer.json.txt` entsteht: Schalten Sie dazu im Explorer im Menü „Ansicht“ die Option „Dateinamenerweiterungen“ ein.
3. Suchen Sie im Startmenü nach „Windows-Features aktivieren oder deaktivieren“ und aktivieren Sie, falls nötig, „VM-Plattform“, „Windows-Hypervisor-Plattform“ und „Windows-Subsystem für Linux“. Windows verlangt danach eventuell einen Neustart.
4. Prüfen Sie in der Eingabeaufforderung (`cmd`) mit `wsl --version`, ob WSL installiert ist; falls nicht, installieren Sie es mit `wsl --install`. Die Versionsnummer muss mit einer 2 beginnen, sonst stellen Sie mit `wsl --set-default-version 2` um.
5. Installieren Sie [Docker Desktop für Windows](https://www.docker.com/products/docker-desktop) mit den vorgeschlagenen Einstellungen und starten Sie es. Ein Konto brauchen Sie nicht. Warten Sie, bis die Docker-Engine läuft.
6. Installieren Sie [VS Code](https://code.visualstudio.com/), darin die Erweiterung „Dev Containers“ (`Strg + Shift + X`, danach suchen, „Install“), und öffnen Sie den Ordner: `Strg + Shift + P` drücken, „Dev Containers: Open Folder in Container…“ tippen und den Befehl auswählen.

**macOS:**

Unter macOS richten Sie alles von Hand ein, mit Docker Desktop.

**1. Ordner anlegen und Container-Vorlage speichern**

1. Legen Sie einen neuen Ordner für Ihre Kursdateien an, zum Beispiel **`inf`**. Legen Sie ihn direkt in Ihrem Benutzerordner an (`/Users/<Ihr Name>/inf`), nicht im Download-Ordner und nicht in einem Ordner, den iCloud synchronisiert. Die Synchronisation kann Dateien sperren, während der Container sie benutzt.
2. Öffnen Sie [inf.zone/devcontainer.json](https://inf.zone/devcontainer.json) im Browser und speichern Sie die Datei mit `Cmd + S` in diesem Ordner. Der Dateiname muss genau **`.devcontainer.json`** lauten, mit einem Punkt am Anfang. Viele Browser schlagen den Namen ohne Punkt vor; ergänzen Sie ihn dann. Beim Speichern fragt macOS, ob der Name wirklich mit einem Punkt beginnen soll; bestätigen Sie mit der Schaltfläche „‚.‘ verwenden“. Im Finder ist die Datei danach unsichtbar, weil macOS Dateien mit einem Punkt am Anfang ausblendet. Mit `Cmd + Shift + .` blenden Sie sie ein und wieder aus.

**2. Docker installieren**

1. Laden Sie [Docker Desktop für Mac](https://www.docker.com/products/docker-desktop) herunter. Es gibt zwei Versionen: für Macs mit Apple-Chip (M1, M2, …) und für Macs mit Intel-Prozessor. Welchen Prozessor Ihr Mac hat, steht im Apfel-Menü unter „Über diesen Mac“.
2. Öffnen Sie die heruntergeladene `.dmg`-Datei und ziehen Sie Docker in den Ordner „Programme“.
3. Starten Sie **Docker** aus dem Ordner „Programme“ und bestätigen Sie die Nutzungsbedingungen. Ein Konto brauchen Sie nicht; den Anmeldeschritt können Sie überspringen. Warten Sie, bis die Docker-Engine gestartet ist.

Auf Macs mit Apple-Chip lädt Docker die Fassung der Kursumgebung für diesen Chip. Auch der Debugger funktioniert dort. Haben Sie Ihren Container vor dem 18. Oktober 2026 eingerichtet, stellen Sie ihn einmal um: [Dev Container auf ARM-Rechnern umstellen](https://inf.zone/extras/setup/devcontainer-arm/).

**3. Visual Studio Code installieren**

Laden Sie VS Code von der [Website von Visual Studio Code](https://code.visualstudio.com/) herunter und ziehen Sie die heruntergeladene App in den Ordner „Programme“.

**4. Dev-Containers-Erweiterung in VS Code installieren**

   1. **Dev-Containers-Erweiterung installieren**
      - Öffnen Sie Visual Studio Code.
      - Gehen Sie zum **Extensions-Panel** (Erweiterungen) im linken Seitenmenü oder drücken Sie `Cmd + Shift + X`.
      - Suchen Sie nach **„Dev Containers“** in der Suchleiste.
      - Klicken Sie auf **„Install“**, um die Erweiterung hinzuzufügen.

   2. **Befehlspalette öffnen und Container-Vorlage wählen:**
      - Drücken Sie `Cmd + Shift + P`, um die Befehlspalette zu öffnen.
      - Geben Sie die ersten Buchstaben von „Dev Containers: Open Folder in Container…“ in die Befehlspalette ein und wählen Sie den Befehl aus, wenn er in der Liste vorgeschlagen wird.
      - Navigieren Sie zum Ordner **`inf`**, den Sie zuvor angelegt hatten. Wenn Sie in diesem Ordner sind, bestätigen Sie im Dialogfeld die Auswahl, um es zu schließen.

      VS Code öffnet den Ordner nun im Dev Container, sodass Sie in der CS50-Umgebung arbeiten können. Beim ersten Mal lädt Docker dafür die CS50-Umgebung herunter; das dauert einige Minuten. Danach richtet sich der Container noch für den Kurs ein.

**VS Code meldet „Docker version … is required“**

Meldet VS Code beim Öffnen des Containers „Docker version … is required“ (mit einer Versionsnummer) und bietet an, Docker zu installieren, obwohl Sie Docker in Schritt 2 schon installiert haben: Klicken Sie nicht auf „Install“. VS Code findet Docker nur noch nicht. Es schaut beim Start nach, welche Programme es gibt; lief VS Code schon, als Sie Docker installiert haben, weiß es nichts davon.

1. Prüfen Sie, ob Docker läuft: Oben rechts in der Menüleiste steht dann das Wal-Symbol von Docker. Fehlt es, starten Sie Docker aus dem Ordner „Programme“ und warten Sie, bis die Docker-Engine gestartet ist.
2. Beenden Sie VS Code ganz mit `Cmd + Q`. Das Fenster zu schließen reicht nicht: Unter macOS läuft das Programm dann weiter.
3. Starten Sie VS Code wieder und wählen Sie noch einmal „Dev Containers: Open Folder in Container…“ mit Ihrem Ordner `inf`.

Haben Sie Docker noch gar nicht installiert, holen Sie Schritt 2 nach, statt auf „Install“ zu klicken.

**Linux:**

> [!NOTE]
> Linux gibt es in vielen Distributionen, und jede installiert Programme etwas anders. Die Schritte unten beschreiben den Ablauf allgemein. Bei Ihnen können Befehle, Paketnamen und Menüs abweichen. Die genauen Befehle für Ihre Distribution stehen in den verlinkten Anleitungen.

Unter Linux richten Sie alles von Hand ein, ähnlich wie unter macOS.

**1. Ordner anlegen und Container-Vorlage speichern**

1. Legen Sie einen neuen Ordner für Ihre Kursdateien an, zum Beispiel **`inf`** direkt in Ihrem Home-Verzeichnis (`~/inf`), nicht im Download-Ordner und nicht in einem Ordner, den ein Cloud-Dienst synchronisiert.
2. Öffnen Sie [inf.zone/devcontainer.json](https://inf.zone/devcontainer.json) im Browser und speichern Sie die Datei mit `Strg + S` in diesem Ordner. Der Dateiname muss genau **`.devcontainer.json`** lauten, mit einem Punkt am Anfang. Viele Browser schlagen den Namen ohne Punkt vor. Ergänzen Sie ihn dann. Die meisten Dateimanager blenden Dateien mit einem Punkt am Anfang aus. Mit `Strg + H` blenden Sie sie ein und wieder aus.

**2. Docker installieren**

1. Installieren Sie die Docker Engine nach der [Anleitung von Docker für Ihre Distribution](https://docs.docker.com/engine/install/). Alternativ gibt es [Docker Desktop für Linux](https://docs.docker.com/desktop/setup/install/linux/). Dann brauchen Sie den nächsten Punkt nicht.
2. Fügen Sie Ihr Konto der Gruppe `docker` hinzu, damit VS Code Docker ohne `sudo` benutzen darf:

   ```bash
   sudo usermod -aG docker $USER
   ```

   Melden Sie sich danach einmal ab und wieder an (oder starten Sie den Rechner neu).
3. Prüfen Sie im Terminal mit `docker run hello-world`, ob Docker läuft: Es erscheint ein Text, der mit „Hello from Docker!“ beginnt.

Hat Ihr Rechner einen ARM-Prozessor, lädt Docker die ARM-Fassung der Kursumgebung. Auch der Debugger funktioniert dort. Haben Sie Ihren Container vor dem 18. Oktober 2026 eingerichtet, stellen Sie ihn einmal um: [Dev Container auf ARM-Rechnern umstellen](https://inf.zone/extras/setup/devcontainer-arm/).

**3. Visual Studio Code installieren**

Installieren Sie VS Code als Paket von der [Website von Visual Studio Code](https://code.visualstudio.com/) (`.deb` für Debian und Ubuntu, `.rpm` für Fedora und openSUSE) oder aus der Paketquelle von Microsoft. Nehmen Sie nicht die Flatpak-Fassung: Aus ihr heraus erreicht VS Code Docker nicht.

**4. Dev-Containers-Erweiterung in VS Code installieren**

1. Öffnen Sie VS Code, drücken Sie `Strg + Shift + X`, suchen Sie nach **„Dev Containers“** und klicken Sie auf **„Install“**.
2. Drücken Sie `Strg + Shift + P`, tippen Sie die ersten Buchstaben von „Dev Containers: Open Folder in Container…“ und wählen Sie den Befehl aus. Wählen Sie dann Ihren Ordner **`inf`** aus.

VS Code öffnet den Ordner nun im Dev Container, sodass Sie in der CS50-Umgebung arbeiten können. Beim ersten Mal lädt Docker dafür die CS50-Umgebung herunter. Das dauert einige Minuten. Danach richtet sich der Container noch für den Kurs ein.

## Erste Schritte in VS Code

Öffnen Sie in VS Code ein Terminal: Menü „Terminal“ → „New Terminal“. Alles Weitere, etwa ein erstes Programm, steht unter [Erste Schritte in der Anleitung für GitHub Codespaces](https://inf.zone/extras/setup/codespace-cloud/#erste-schritte); im Dev Container funktioniert es genauso.

## Abgabewerkzeug `inf` ausprobieren und anmelden

Ihre Übungen geben Sie im Terminal mit dem Abgabewerkzeug `inf` ab. Beim ersten Start richtet sich der Container noch für den Kurs ein: Warten Sie, bis im Terminal „Container eingerichtet.“ steht. Tippen Sie dann zur Probe `inf` ins Terminal: Erscheint eine Liste der Befehle, ist alles bereit. Die Zeile „Container eingerichtet.“ erscheint nur beim ersten Start und nach „Rebuild Container“, bei jedem weiteren Start nicht mehr. Das ist richtig so: Ob alles bereit ist, zeigt immer `inf`.

**Die Einrichtung bricht vorher ab (exit code 1)**

Über der Meldung steht eine Zeile, die mit `setup-container:` beginnt. Diese Zeile selbst sagt, warum die Einrichtung abgebrochen ist. Meist fehlte die Internetverbindung. Fügen Sie dann im Terminal des Containers diese Zeile ein und drücken Sie Enter:

> [!CAUTION]
> **Nie wahllos Skripte aus dem Internet laden und ausführen.** Eine Zeile wie diese lädt ein Programm aus dem Internet und reicht es sofort zum Ausführen weiter (`| bash`, `| iex`), mit allen Rechten Ihres Benutzerkontos und ohne dass Sie es vorher sehen. Wer Ihnen so eine Zeile unterschiebt, kann damit Ihre Dateien löschen, Passwörter mitlesen oder Schadsoftware einrichten. Führen Sie sie deshalb nur aus, wenn Sie der Quelle vertrauen, und genau so, wie sie dort steht: von dieser Seite (Adressen auf `inf.zone`) oder von der offiziellen Seite des Programms. Zeilen aus Foren, Chats, E-Mails, Videos oder von einer KI führen Sie nie ungeprüft aus.

```bash
curl -fsSL https://inf.zone/setup-container.sh | bash
```

Bricht auch das ab, bringen Sie die letzten Zeilen über der Meldung ins Tutorium mit.

Melden Sie sich danach an, damit beim ersten Abgeben alles bereit ist:

Bevor Sie zum ersten Mal abgeben, melden Sie sich einmal an. Tippen Sie dazu `inf login` ins Terminal. Tippen Sie gleich `inf upload`, beginnt die Anmeldung von selbst. Dann geht es so weiter:

1. `inf` fragt nach Ihrer Uni-E-Mail-Adresse. Geben Sie nur den Teil vor dem `@` ein, bei `max.mustermann@stud.uni-bamberg.de` also `max.mustermann`.
2. An diese Adresse geht eine Mail mit einem sechsstelligen Code. Tippen Sie ihn ein; er gilt zehn Minuten. Kommt keine Mail, sehen Sie im Spam-Ordner nach. Haben Sie sich bei der Adresse vertippt, brechen Sie mit `Strg + C` ab und fangen neu an.
3. Nur beim ersten Mal: Geben Sie Ihre Matrikelnummer ein, zur Kontrolle zweimal. Gemeint sind die sieben Ziffern, nicht Ihre BA-Nummer (`ba…`).

Ob Sie die Prüfung mit 6 oder mit 9 ECTS ablegen, fragt `inf` nicht: Für die [Joker-Regel](https://inf.zone/extras/exam/#joker-regel) gilt, was zu der Klausur passt, die Sie am Ende schreiben.

Danach bleiben Sie angemeldet. `inf whoami` zeigt, mit welcher Adresse; `inf logout` meldet Sie ab. Wurde Ihr Codespace oder Dev Container neu erstellt, fragt `inf` wieder nach Adresse und Code. Die Matrikelnummer kennt der Server dann schon.

## Verbindung zum Container schließen und neu aufbauen

Normalerweise brauchen Sie diesen Abschnitt nicht. In den meisten Fällen startet VS Code den Container automatisch und baut die Verbindung auf, wenn Sie VS Code starten.

Wenn VS Code beendet wird, wird die Verbindung abgebaut, der Container läuft aber im Hintergrund weiter. Um Ressourcen zu sparen, beenden Sie unter macOS Docker Desktop oder halten den Container dort an. Unter Windows mit unserem Skript läuft Docker in Ubuntu unter WSL; ein Neustart von Windows hält alles an.

Falls Sie einmal die Verbindung zum Container manuell schließen oder aufbauen müssen, befolgen Sie dazu diese Schritte:

   1. **Verbindung schließen:** Die Verbindung zum Container kann im Menü unter „File“ > „Close Remote Connection“ geschlossen werden.

   2. **Verbindung aufbauen:** Wenn Sie sich erneut verbinden möchten, können Sie dies im linken Seitenmenü unter „Remote Explorer“ tun. Hierzu wählen Sie im Unterpunkt „Dev Container“ den gewünschten Container aus und klicken auf „Open in Container …“. Der Container sollte sich erneut öffnen.

   3. **Falls keine Container angezeigt werden:** Unter Windows mit unserem Skript öffnen Sie in VS Code Ihren Kursordner (Menü „Datei“ → „Ordner öffnen“) und klicken unten rechts auf „Reopen in Container“; VS Code startet den Container dann selbst. Mit Docker Desktop (macOS, Windows ohne Skript) öffnen Sie Docker Desktop. Unter „Containers“ sehen Sie den Container für den Kurs. Starten Sie ihn mit dem Play-Symbol (▶) und bauen Sie danach die Verbindung in VS Code wie in Schritt 2 auf. In Docker Desktop sehen Sie auch, ob der Container gerade startet oder ob ein Fehler aufgetreten ist. Unter Linux mit der Docker Engine zeigt `docker ps -a` im Terminal den Container samt Namen, `docker start <Name>` startet ihn.

   4. **Container neu erstellen:** Läuft im Container etwas grundsätzlich schief, erstellen Sie ihn neu, statt ihn von Hand zu entfernen. Drücken Sie `Strg + Shift + P` (Mac: `Cmd + Shift + P`), tippen Sie `Rebuild Container` und wählen Sie „Dev Containers: Rebuild Container“ (nicht „Reopen in Container“, das verbindet nur wieder mit dem alten). Ihre Dateien im Kursordner bleiben erhalten. Warten Sie, bis „Container eingerichtet.“ im Terminal steht, und melden Sie sich danach mit `inf login` wieder bei `inf` an.

---

Bei Fragen oder Problemen mit der Einrichtung können Sie Susi fragen, den Chatbot der Kursseite (Knopf unten rechts oder eine Stelle dieser Anleitung markieren). Außerdem helfen Ihnen die Tutorinnen und Tutoren gerne weiter.
