Erweiterte Docker-Techniken
Container-Ressourcenverwaltung
graph TD
A[Ressourcenverwaltung] --> B[CPU-Limits]
A --> C[Speicherbeschränkungen]
A --> D[Speicherkontingente]
Beispiel für die Ressourcenallokation
## Container auf 1 CPU-Kern und 512 MB Speicher begrenzen
sudo docker run -it --cpus=1 --memory=512m ubuntu /bin/bash
## Speicher- und Swap-Limits festlegen
sudo docker run -it --memory=1g --memory-swap=2g ubuntu /bin/bash
Docker Compose für die Bereitstellung mehrerer Container
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
database:
image: postgres
environment:
POSTGRES_PASSWORD: mysecretpassword
Sicherheitsbest Practices
Sicherheitstechnik |
Implementierung |
Container ohne Root-Rechte |
Verwenden Sie die USER-Direktive in der Dockerfile |
Schreibgeschütztes Dateisystem |
Fügen Sie das :ro-Flag zu Volume-Mounts hinzu |
Begrenzung der Container-Berechtigungen |
Verwenden Sie --cap-drop und --cap-add |
Container-Orchestrierung mit Docker Swarm
## Swarm-Cluster initialisieren
sudo docker swarm init
## Dienst mit Replikaten erstellen
sudo docker service create --replicas 3 --name web nginx
## Dienst dynamisch skalieren
sudo docker service scale web=5
Erweiterte Netzwerkkonfigurationen
## Benutzerdefiniertes Netzwerk mit Subnetz erstellen
sudo docker network create \
--driver bridge \
--subnet 192.168.0.0/24 \
--gateway 192.168.0.1 \
custom_network
Container-Überwachung und Logging
## Container-Logs in Echtzeit anzeigen
sudo docker logs -f container_name
## Container-Metriken anzeigen
sudo docker stats container_name
## Größe der Logdatei begrenzen
sudo docker run --log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx
Dockerfile-Optimierungsmethoden
## Mehrstufiger Build
FROM maven:3.8.1-openjdk-11 AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/app.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]