{"meta":{"title":"Neuerstellen des Containers in einem Codespace","intro":"Sie können den Entwicklungscontainer eines Codespaces, in dem Sie arbeiten, neu erstellen, um Konfigurationsänderungen anzuwenden. Von Zeit zu Zeit möchten Sie möglicherweise einen vollständigen Neuaufbau durchführen.","product":"Codespaces","breadcrumbs":[{"href":"/de/codespaces","title":"Codespaces"},{"href":"/de/codespaces/developing-in-a-codespace","title":"In einem Codespace entwickeln"},{"href":"/de/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace","title":"Neuerstellen eines Containers"}],"documentType":"article"},"body":"# Neuerstellen des Containers in einem Codespace\n\nSie können den Entwicklungscontainer eines Codespaces, in dem Sie arbeiten, neu erstellen, um Konfigurationsänderungen anzuwenden. Von Zeit zu Zeit möchten Sie möglicherweise einen vollständigen Neuaufbau durchführen.\n\n## Informationen zum Neuaufbau des Entwicklungscontainers\n\nWenn du in einem Codespace arbeitest, ist deine Entwicklungsumgebung ein Docker-Container, der auf einem virtuellen Computer ausgeführt wird. Wenn du Änderungen an der Konfiguration deines Entwicklungscontainers von einem Codespace aus vornimmst, und diese Änderungen auf den aktuellen Codespace anwenden möchtest, musst du den Container neu erstellen.\n\nWenn Sie den Entwicklungscontainer neu erstellen, beschleunigt GitHub Codespaces standardmäßig den Buildprozess, indem zwischengespeicherte Images aus früheren Builds des Containers wiederverwendet werden. Dies ist in der Regel die schnellste Möglichkeit, Änderungen an deiner Entwicklungscontainerkonfiguration zu implementieren, und zwar aus folgenden Gründen.\n\n* GitHub Codespaces kann Images in deinem Cache wiederverwenden, anstatt sie erneut aus Containerregistrierungen zu pullen.\n* Die Teile deiner Entwicklungscontainerkonfiguration, die definieren, wie der Container erstellt wird, z. B. Entwicklercontainerfeatures und Dockerfile-Anweisungen, wurden möglicherweise bereits in Imageebenen in deinem Cache implementiert, sodass du nicht warten musst, bis diese Prozesse erneut ausgeführt werden. (Befehle in deiner Konfiguration, die nach dem Erstellen des Containers ausgeführt werden, z. B. `onCreateCommand`, werden jedoch erneut ausgeführt.)\n\nGelegentlich können Sie einen vollständigen Wiederaufbau Ihres Containers durchführen. Bei einer vollständigen Neuerstellung bereinigt GitHub Codespaces alle Docker-Container, Images und Volumes aus dem Cache und erstellt deinen Container dann mit neu gepullten Images neu. Das gesamte in deiner Konfiguration definierte Setup wird erneut ausgeführt, wodurch neue Imageebenen generiert werden. In folgenden Situationen solltest du nach vielen Iterationen, in denen du deinen Container mit zwischengespeicherten Images neu erstellt hast, eine vollständige Neuerstellung durchführen.\n\n* Du solltest sicherstellen, dass das in deiner Konfiguration definierte Setup nicht von zwischengespeicherten Images abhängig ist, und wie erforderlich ausgeführt wird, wenn basierend auf der Konfiguration ein neuer Codespace erstellt wird. Beispielsweise kann eine Abhängigkeit aus dem Basis-Image entfernt worden sein, seit es zuletzt in deinen Codespace gezogen wurde.\n* Du solltest den von deinem Cache verwendeten Speicherplatz auf dem Datenträger freigeben, wenn bspw. der Speicherplatz auf dem Datenträger knapp ist, oder du die Speichergebühren minimieren möchtest. Dein Imagecache benötigt möglicherweise erheblichen Speicherplatz auf dem Datenträger, wenn du dein Basisimage mehrmals geändert hast, eine große Anzahl iterativer Änderungen an deiner Konfiguration vorgenommen hast oder du mehrere Container mit Docker Compose ausführst.\n\n## Neuerstellen eines Containers\n\nDu kannst einen Container in einem Codespace im VS Code-Webclient oder in der Desktopanwendung neu erstellen, oder du kannst die GitHub CLI verwenden.\n\n### Wiederherstellen des Entwicklungscontainers im Web-Client oder in der Desktopanwendung von VS Code\n\n1. Greife auf VS Code Command Palette mit <kbd>UMSCHALT</kbd>+<kbd>BEFEHL</kbd>+<kbd>P</kbd> (Mac) oder <kbd>STRG</kbd>+<kbd>UMSCHALT</kbd>+<kbd>P</kbd> (Windows/Linux) zu.\n\n2. Beginnen Sie mit der Eingabe von \"Neu erstellen\", und wählen Sie **Codespaces: Container neu erstellen** aus.\n\n   ![Screenshot: Option \"Codespaces: Container neu erstellen\" in der Befehlspalette.](/assets/images/help/codespaces/codespaces-rebuild.png)\n\n3. Wählen Sie **Neu erstellen** oder **Vollständig neu erstellen** im Bestätigungsdialogfeld aus, der geöffnet wird.\n\n4. Wenn Änderungen an der Konfiguration deines Entwicklungscontainers zu einem Containerfehler führen, wird der Codespace im Wiederherstellungsmodus ausgeführt, und es wird eine Fehlermeldung angezeigt.\n\n   ![Screenshot einer Meldung, die besagt, dass der Codespace im Wiederherstellungsmodus ausgeführt wird Unterhalb der Meldung befinden die Schaltflächen Abbrechen und Erstellungsprotokoll anzeigen.](/assets/images/help/codespaces/recovery-mode-error-message.png)\n\n   * Klicke auf **Erstellungsprotokoll anzeigen**, um den Fehler durch das Überprüfen der Erstellungsprotokolle zu diagnostizieren.\n   * Aktualisiere deine `devcontainer.json`-Datei, um die in den Protokollen identifizierten Fehler zu beheben.\n   * Erstelle deinen Container neu, um die Änderungen anzuwenden.\n\n### Verwenden von GitHub CLI zur Neuerstellung eines Entwicklungscontainers\n\nWenn du eine Entwicklungscontainerkonfiguration außerhalb von VS Code geändert hast, z. B. in GitHub, kannst du die GitHub CLI zum Neuerstellen des Entwicklungscontainers für einen vorhandenen Codespace verwenden.\n\n1. Gib in einem Terminal den folgenden Befehl ein:\n\n   ```shell\n   gh codespace rebuild\n   ```\n\n   Deine Codespaces werden aufgelistet.\n\n2. Verwende die Pfeiltasten auf der Tastatur, um den erforderlichen Codespace zu markieren, und drücke dann die <kbd>EINGABETASTE</kbd>.\n\nFür eine vollständige Neuerstellung mit der GitHub CLI kannst du den Befehl `gh codespace rebuild --full` verwenden.\n\n## Eine Neuerstellung übergreifendes Beibehalten von Daten\n\nWenn du einen Codespace erstellst, wird dein Repository in das `/workspaces`-Verzeichnis deines Codespace geklont. Es handelt sich um ein persistentes Verzeichnis, das in den Container eingebunden wird. Alle Änderungen, die du in diesem Verzeichnis vornimmst, einschließlich dem Bearbeiten, Hinzufügen oder Löschen von Dateien, werden beibehalten, wenn du den Codespace beendest und startest oder wenn du den Container im Codespace neu erstellst.\n\nAußerhalb des `/workspaces`-Verzeichnisses hat Ihr Codespace eine Linux-Verzeichnisstruktur, die abhängig vom Dev-Containerimage variiert, das zum Erstellen Ihres Codespace verwendet wird. Sie können Dateien hinzufügen oder Änderungen an Dateien außerhalb des Verzeichnisses `/workspaces` vornehmen. Sie können beispielsweise neue Programme installieren oder die Shell-Konfiguration in einer Datei einrichten wie z. B. `~/.bashrc`. Als Nicht-Root-Benutzer\\*in hast du möglicherweise nicht automatisch Schreibzugriff auf bestimmte Verzeichnisse, aber die meisten Images lassen den Root-Zugriff auf diese Verzeichnisse mit dem `sudo`-Befehl zu.\n\nAußerhalb von `/workspaces` sind die Verzeichnisse in einem Codespace mit Ausnahme des `/tmp`-Verzeichnisses an den Lebenszyklus des Containers gebunden. Das bedeutet, dass alle Änderungen, die Sie vornehmen, beibehalten werden, wenn Sie den Codespace beenden und starten, aber nicht, wenn Sie den Container neu erstellen.\n\nWenn Daten außerhalb des Verzeichnisses `/workspaces` eine Neuerstellung übergreifend beibehalten werden sollen, kannst du eine symbolische Verknüpfung (Symlink) mit dem persistenten Verzeichnis am gewünschten Speicherort innerhalb des Containers erstellen. Du kannst z. B. in deinem `/workspaces/.devcontainer`-Verzeichnis ein `config`-Verzeichnis erstellen, das bei einer Neuerstellung beibehalten wird. Anschließend erstellst du eine symbolische Verknüpfung für das `config`-Verzeichnis und seinen Inhalt als `postCreateCommand` in deiner `devcontainer.json`-Datei.\n\n```json\n{\n    \"image\": \"mcr.microsoft.com/devcontainers/base:alpine\",\n    \"postCreateCommand\": \"chmod +x .devcontainer/postCreate.sh && .devcontainer/postCreate.sh\"\n}\n```\n\nIn der nachstehenden Beispieldatei `postCreate.sh` werden die Inhalte des `config`-Verzeichnisses symbolisch mit dem Basisverzeichnis verknüpft.\n\n```bash\n#!/bin/bash\nln -sf $PWD/.devcontainer/config $HOME/config && set +x\n```\n\n## Weiterführende Lektüre\n\n* [Einführung in Dev-Container](/de/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)"}