Erste Schritte mit dem WSL-Container

Diese Schritt-für-Schritt-Anleitung hilft Ihnen beim Einstieg in das Erstellen und Ausführen von Linux-Containern unter Windows mit wslc.exe, der in WSL integrierten Container-CLI.

wslc.exe bietet eine vertraute CLI zum Erstellen, Versenden und Ausführen von containerisierten Apps.

Übersicht über WSL-Container

Ein Container ist ein Tool zum Erstellen, Bereitstellen und Ausführen von Anwendungen. Mit Containern können Entwickler eine App mit allen benötigten Komponenten (Bibliotheken, Frameworks, Abhängigkeiten usw.) verpacken und als ein Paket versenden. Durch die Verwendung eines Containers wird sichergestellt, dass die App unabhängig von angepassten Einstellungen oder zuvor installierten Bibliotheken auf dem Computer, auf dem sie ausgeführt wird, dieselbe Leistung zeigt, unabhängig davon, dass diese sich von der Maschine unterscheiden können, die zum Schreiben und Testen des App-Codes verwendet wurde. Dadurch können Entwickler sich auf das Schreiben von Code konzentrieren, ohne sich Gedanken über das System zu machen, auf dem Code ausgeführt wird.

Voraussetzungen

  • WSL installiert. Führen Sie wsl --update aus, um sicherzustellen, dass Sie die neueste Version haben.
  • Installieren Sie Visual Studio Code(optional). Dies bietet die beste Erfahrung, einschließlich der Möglichkeit zum Codieren und Debuggen Ihrer containerisierten Projekte, die mit Ihrer Linux-Verteilung verbunden sind.
  • Installieren Sie Windows-Terminal(optional). Dies bietet die beste Erfahrung, einschließlich der Möglichkeit, mehrere Terminals in derselben Schnittstelle anzupassen und zu öffnen (einschließlich Ubuntu, Debian, PowerShell, Azure CLI oder was Sie bevorzugen).

Installieren und Überprüfen von wslc

wslc.exe ist in WSL enthalten, daher muss keine separate Engine installiert werden. Um sicherzustellen, dass Sie über eine Version von WSL verfügen, die sie enthält:

  1. Installieren Sie WSL , falls noch nicht geschehen, und aktualisieren Sie dann auf die neueste Version, indem Sie PowerShell öffnen und Folgendes eingeben:

    wsl --update
    
  2. Vergewissern Sie sich, dass wslc.exe verfügbar ist, und überprüfen Sie ihre Version, indem Sie Folgendes eingeben:

    wslc version
    
  3. Testen Sie, dass alles ordnungsgemäß funktioniert, indem Sie ein einfaches integriertes Image ausführen. Das Bild wird automatisch abgerufen, wenn es noch nicht lokal vorhanden ist:

    wslc run --rm hello-world
    

    Es sollte eine Meldung "Hello" angezeigt werden, die bestätigt, dass Ihre Installation ordnungsgemäß funktioniert.

Tipp

Hier sind einige hilfreiche wslc Befehle, die Sie kennen sollten:

  • Auflisten der befehle, die in der wslc CLI verfügbar sind, indem Sie Folgendes eingeben: wslc --help
  • Geben Sie Informationen für einen bestimmten Befehl an mit: wslc <COMMAND> --help
  • Listen Sie die Images auf Ihrem Rechner auf, mit: wslc image list
  • Listen Sie die laufenden Container auf Ihrem Rechner auf mit: wslc container list oder listen Sie alle Container (einschließlich gestoppter Container) auf mit: wslc container list --all
  • Ressourcennutzungsstatistiken für Ihre laufenden Container anzeigen mit: wslc stats

Ausführen Ihres ersten Containers

Mit wslc.exe können Sie Images herunterladen, Container im Vordergrund oder im Hintergrund ausführen, Ports freigeben und mit laufenden Containern interagieren. Probieren Sie einige dieser Befehle aus PowerShell aus:

# Run a command in a throwaway container
wslc run --rm -it ubuntu:latest bash -c "echo Hello world from WSL container!"

# Run a web server in the background and publish port 8080 to the container's port 80
wslc run -d --rm -p 8080:80 --name web nginx

# Request content from the running web server
curl localhost:8080

# List the running container
wslc container list

# Run an additional command inside the running container
wslc exec web cat /etc/os-release

# Stop the container
wslc container stop web

Da der nginx Container mit --rm gestartet wurde, wird er automatisch entfernt, sobald er beendet wird.

Erstellen und führen Sie Ihr eigenes Container-Image aus

Um mit der Entwicklung von Apps wslc.exezu beginnen, empfehlen wir die Verwendung von VS Code zusammen mit der WSL-Erweiterung , damit Sie Ihr Projekt im Linux-Dateisystem bearbeiten und Befehle über das integrierte Terminal ausführen wslc können.

Erstellen wir ein Containerimage für ein vorhandenes App-Projekt.

  1. In diesem Beispiel verwenden wir den Quellcode aus dem Hallo Welt Lernprogramm für Django in der Python Entwicklungsumgebung, um Dokumente einzurichten. Sie können diesen Schritt überspringen, wenn Sie lieber Ihren eigenen Projektquellcode verwenden möchten. Um die HelloWorld-Django Web-App von GitHub herunterzuladen, öffnen Sie ein WSL-Terminal (z. B. Ubuntu), und geben Sie Folgendes ein:

    git clone https://github.com/<username>/helloworld-django.git
    

    Hinweis

    Speichern Sie Ihren Code immer im selben Dateisystem, in dem Sie Tools verwenden. Dies führt zu einer schnelleren Leistung des Dateizugriffs. In diesem Beispiel verwenden wir eine Linux-Distro (Ubuntu) und möchten unsere Projektdateien im WSL-Dateisystem \\wsl$speichern. Das Speichern von Projektdateien im Windows-Dateisystem würde dies erheblich verlangsamen, wenn Sie Linux-Tools in WSL verwenden, um auf diese Dateien zuzugreifen.

  2. Wechseln Sie in Ihrem WSL-Terminal in den Quellcodeordner für dieses Projekt:

    cd helloworld-django
    
  3. Öffnen Sie das Projekt in VS Code, das auf dem lokalen WSL-Erweiterungsserver ausgeführt wird, indem Sie Folgendes eingeben:

    code .
    

    Vergewissern Sie sich, dass Sie mit Ihrer WSL Linux-Distribution verbunden sind, indem Sie die grüne Remoteanzeige in der unteren linken Ecke Ihrer VS Code-Instanz überprüfen.

    VS Code: WSL-Remoteanzeige

  4. Fügen Sie dem Stammverzeichnis Ihres Projekts ein Containerfile hinzu, in dem beschrieben wird, wie das Image erstellt wird. Für das Django-Beispiel könnte ein minimales Containerfile wie folgt aussehen:

    FROM python:3
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    EXPOSE 8000
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
    
  5. Erstellen Sie aus dem Projektordner (dem Verzeichnis, das Ihr ContainerfileEnthält), das Image mit wslc build, und markieren Sie es mit einem Namen, auf den Sie später verweisen können:

    wslc build -t helloworld-django .
    
  6. Vergewissern Sie sich, dass das Bild erstellt wurde, indem Sie Ihre Bilder auflisten:

    wslc image list
    
  7. Führen Sie ihr neu erstelltes Image als Container aus, und veröffentlichen Sie den Port der App, damit Sie es über Windows erreichen können:

    wslc run -d --rm -p 8000:8000 --name django helloworld-django
    
  8. Um zu überprüfen, dass Ihr Container läuft, listen Sie die laufenden Container auf und prüfen Sie dessen Protokolle:

    wslc container list
    wslc container logs django
    
  9. Öffnen Sie unter Windows einen Browser, und rufen Sie http://localhost:8000/ auf, um Ihre App in ihrem Container auszuführen zu sehen. Sie können auch bestätigen, dass die App unter Linux ausgeführt wird, indem Sie einen Befehl im Container ausführen:

    wslc exec django uname
    

    Das uname Ergebnis von "Linux" bestätigt, dass der Container auf dem WSL 2 Linux-Kernel ausgeführt wird.

  10. Wenn Sie fertig sind, beenden Sie den Container:

    wslc container stop django
    

Sie haben nun erfolgreich einen Linux-Container auf Windows mithilfe wslc.exevon WSL 2 erstellt und ausgeführt, den Sie zusammen mit VS Code erstellen, ausführen, bereitstellen oder debuggen können!

Problembehandlung

Container oder Image überprüfen

Wenn sich ein Container unerwartet verhält, stellen die inspect Befehle logs detaillierte Informationen bereit, mit denen Sie das Problem diagnostizieren können:

wslc container inspect <container-id>
wslc container logs <container-id>
wslc image inspect <image>

Freigeben von Speicherplatz

Images und beendete Container verbrauchen Speicherplatz. So bereinigen Sie Ressourcen, die Sie nicht mehr verwenden:

# Remove all stopped containers
wslc container prune

# Remove unused images
wslc image prune

Weitere Hilfe zur allgemeinen Problembehandlung in WSL finden Sie im Dokument zur Problembehandlung .

Weitere Ressourcen