====== Docker Überwachung und Sicherheit ====== ---- ==== Arbeitsspeicher und Swap Auslastung ==== free -lh ==== Festplattenauslastung der Docker Container ==== docker system df ==== Informationen über den Docker Host ==== docker system info ==== ==== ==== Laufende Container gegen Fehlkonfigurationen prüfen ==== **Docker Bench for Security** ist ein Skript, das dein gesamtes Docker-Setup anhand der Empfehlungen des Center for Internet Security (CIS) auditiert. Es prüft z.B. Host-Sicherheitskonfiguration, Container-Einstellungen und Netzwerkregeln:\\ **Installation und Aiufrug** git clone https://github.com/docker/docker-bench-security.git cd docker-bench-security sudo sh docker-bench-security.sh Das Skript erstellt einen detaillierten Bericht mit Verbesserungsvorschlägen ==== Logs anzeigen ==== docker logs CONTAINERNAME Eine Liste der Commands findest du [[https://docs.docker.com/engine/reference/commandline/container_logs/|in der Docker Doku]] ==== Passwörter in docker-compose files ==== Um Passwörter in Docker Compose **nicht im env-File** zu hinterlegen, sondern als Datei-gehaltenes Secret zu verwenden, nutzt du die Compose-„secrets“-Funktion. Diese stellt Daten im Container unter /run/secrets/ als Datei bereit. Das offizielle Nextcloud-Image (und die meisten aktuellen Datenbank-Container) unterstützen die Übergabe sensibler Daten per *_FILE-Umgebungsvariablen, die auf diese Dateien zeigen. Ein exemplarisches docker-compose.yml für Nextcloud & Postgres mit Secret-Verwendung könnte so aussehen: version: '3.9' services: db: image: postgres:16 restart: always volumes: - db_data:/var/lib/postgresql/data environment: POSTGRES_DB_FILE: /run/secrets/postgres_db POSTGRES_USER_FILE: /run/secrets/postgres_user POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password secrets: - postgres_db - postgres_user - postgres_password app: image: nextcloud:latest restart: always ports: - 8080:80 volumes: - nextcloud_data:/var/www/html environment: POSTGRES_HOST: db POSTGRES_DB_FILE: /run/secrets/postgres_db POSTGRES_USER_FILE: /run/secrets/postgres_user POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password NEXTCLOUD_ADMIN_USER_FILE: /run/secrets/nc_admin_user NEXTCLOUD_ADMIN_PASSWORD_FILE: /run/secrets/nc_admin_pw depends_on: - db secrets: - postgres_db - postgres_user - postgres_password - nc_admin_user - nc_admin_pw volumes: db_data: nextcloud_data: secrets: postgres_db: file: ./secrets/postgres_db.txt postgres_user: file: ./secrets/postgres_user.txt postgres_password: file: ./secrets/postgres_password.txt nc_admin_user: file: ./secrets/nc_admin_user.txt nc_admin_pw: file: ./secrets/nc_admin_pw.txt **Wichtige Hinweise:** * Die Secret-Dateien müssen als Plaintext (ohne Anführungszeichen/Leerzeilen) z.B. in ''./secrets/nc_admin_pw.txt'' liegen. * Die *_FILE-Umgebungsvariablen müssen (//statt// der normalen Variablen) genutzt werden, z.B. ''NEXTCLOUD_ADMIN_PASSWORD_FILE'' statt ''NEXTCLOUD_ADMIN_PASSWORD''. * Diese Technik wird von Compose ab v3.1+ (nicht nur im Swarm) unterstützt, und ist für Nextcloud/Postgres-Images dokumentiert. * Alle Secrets werden als Datei **nur** im Container bereitgestellt und tauchen nicht in Umgebungsvariablen oder Logs auf. So bleiben sensible Informationen aus der Compose-Datei, dem ENV-File und sämtlichen Logfiles heraus und werden sicher als Datei injiziert. ==== Resourcenauslastung jedes einzelnen laufenden Docker Container ==== docker stats --no-stream