.NET
DevOps
Backend-Entwicklung

Docker für .NET-Entwickler

Zweitägiger Praxis-Workshop für .NET-Entwickler: Docker-Grundlagen, mehrstufige Dockerfiles, dotnet publish für Container-Images, Volume-Verwaltung, Docker CLI und Aspire-Integration für lokale Orchestrierung.

Docker verstehen für .NET Entwickler: Images, Publishing und Aspire

Dauer: 2 Tage

Hands-on-Workshop für .NET-Entwickler, um containerisierte Anwendungen mit Docker zu bauen, zu starten und auszuliefern. Sie lernen, Dockerfiles zu schreiben, dotnet publish für Container-Images zu nutzen, Ausgaben anzupassen, Volumes zu verwenden, die Docker-CLI zu bedienen und mit Aspire zu sehen, wie alles modelliert und konfiguriert wird.

Zielgruppe

  • .NET-Entwickler ohne Container-Erfahrung
  • Teams, die Docker für lokale Entwicklung und Deployment standardisieren

Voraussetzungen

  • Grundkenntnisse in C#/.NET-Projekten
  • Docker Desktop installiert

Lernziele

  • Dockerfiles für .NET-Apps (Build/Publish/Run) schreiben und optimieren
  • dotnet publish für Container-Images nutzen; Publishing und Containereigenschaften anpassen
  • Volumes für Daten/Konfiguration einsetzen und Bind- vs. Named-Volumes verstehen
  • Wichtige Docker-CLI-Kommandos bedienen (build, run, ps, logs, exec, cp, prune)
  • Aspire einsetzen, um Services, Images und Konfiguration für lokale Orchestrierung zu modellieren

Agenda

  1. Docker-Grundlagen
    • Images, Layer, Container; Registry-Basics
    • Multi-Stage-Builds für .NET (restore/build/publish)
  2. Dockerfiles für .NET
    • Basis-Images (SDK vs. ASP.NET Runtime vs. Distroless)
    • Build-Args, Env Vars, EntryPoints, Healthchecks
    • Trimming/AOT für kleinere Images
  3. dotnet publish für Container
    • dotnet publish -c Release -r <rid> --self-contained vs. framework-dependent
    • dotnet publish /p:PublishProfile=DefaultContainer und Container-Properties
    • Image-Name/Tag, Basis-Image, Container-Umgebung anpassen
  4. Volumes und Daten
    • Bind-Mounts vs. Named-Volumes; Config/Secrets abbilden; Persistenz
    • Logs und Datenverzeichnisse nutzen
  5. Docker-CLI in der Praxis
    • docker build, docker run, docker compose, docker ps/logs/exec/cp
    • Tagging, Push/Pull; Aufräumen von Images/Containern
  6. Aspire-Integration
    • Services und Container im AppHost modellieren
    • Environment-Variablen, References, Health Checks verdrahten
    • Konfiguration und Telemetrie im Aspire-Dashboard betrachten
  7. Deployment-Aspekte
    • Image-Optimierung, Caching, Layer-Hygiene
    • Sicherheitsbasics: Non-Root, Secrets, minimale Base-Images

Hands-on Labs

  • Multi-Stage-Dockerfile für eine .NET-Web-API erstellen und lokal ausführen
  • Mit dotnet publish ein Container-Image erzeugen; Image-Name/Tag und Basis-Image anpassen
  • Ein Named-Volume für Daten mounten und Persistenz über Neustarts prüfen
  • Docker-CLI nutzen, um zu bauen, zu starten, Logs zu inspizieren und in einen Container zu exec-en
  • Einen Aspire-AppHost erstellen, der den Service-Container startet, Env Vars setzt und Health Checks exponiert
  • Laufenden Container und Telemetrie im Aspire-Dashboard ansehen

Ergebnisse

  • Eine funktionierende Sammlung von Dockerfiles und Publish-Settings für .NET-Apps
  • Sicherheit im Umgang mit Docker-CLI und Volumes für die lokale Entwicklung
  • Ein Aspire-Modell, das Container-Konfiguration, Health und Telemetrie demonstriert
An unhandled error has occurred. Reload 🗙