
Docker & Containerization
Dockerfile, Multi-Stage-Builds, Image-Optimierung, docker-compose, Container-Orchestrierung
1Was ist der Hauptgrund für die Verwendung eines Multi-Stage-Builds für eine Go-Anwendung?
Was ist der Hauptgrund für die Verwendung eines Multi-Stage-Builds für eine Go-Anwendung?
Antwort
Der Multi-Stage-Build trennt die Kompilierungsumgebung vom finalen Image. Die Build-Stage enthält das vollständige Go-SDK (mehrere hundert MB), während das finale Image nur die kompilierte Binärdatei enthält. Dies reduziert die Image-Größe drastisch (von ~800MB auf wenige MB) und minimiert die Angriffsfläche, indem unnötige Build-Tools in der Produktion entfernt werden.
2Welches Basis-Image wird für eine Go-Anwendung in der Produktion empfohlen, um Größe und Angriffsfläche zu minimieren?
Welches Basis-Image wird für eine Go-Anwendung in der Produktion empfohlen, um Größe und Angriffsfläche zu minimieren?
Antwort
Das scratch-Image ist ein leeres Image ohne Betriebssystem. Go kompiliert zu statischen Binärdateien, die kein libc oder andere Systemabhängigkeiten benötigen, wodurch scratch nutzbar wird. Dies erzeugt die kleinstmöglichen Images (wenige MB) und bietet die beste Sicherheit, da es keine ausnutzbaren Tools oder Shells gibt. Distroless und alpine sind gültige, aber weniger optimale Alternativen.
3Welche Go-Kompilierungsflags sind erforderlich, um eine mit einem scratch-Image kompatible Binärdatei zu erstellen?
Welche Go-Kompilierungsflags sind erforderlich, um eine mit einem scratch-Image kompatible Binärdatei zu erstellen?
Antwort
CGO_ENABLED=0 deaktiviert cgo und zwingt Go, reine Go-Implementierungen für Pakete wie net und os/user zu verwenden. Ohne dies hätte die Binärdatei dynamische Abhängigkeiten zu libc. GOOS und GOARCH geben die Zielplattform an. Diese kombinierten Flags erzeugen eine vollständig statische Binärdatei ohne externe Abhängigkeiten, ideal für scratch.
Wie optimiert man das Docker-Layer-Caching beim Build einer Go-Anwendung?
Was ist der Vorteil der Verwendung von Google-Distroless-Images für Go im Vergleich zu scratch?
+17 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
Concurrency-Patterns
Synchronisationsprimitive
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Kubernetes Basics
Fortgeschrittenes Go
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten