Die digitalen Geräte: , , etc.
Private Aktivitäten sind untersagt: unter anderem Social Media, Spiele, Videos, private E-Mails/Chats, Surfen, Shoppen, etc.
Die Konzentration der Mitschüler muss gewährleistet sein.
Lärm ist zu vermeiden z.B. laute Gespräche, Geräusche, Rufen.
Freundlicher, höflicher und respektvoller Umgangston
Definiert Multi-Container-Anwendungen in einer YAML-Datei.
docker compose <command>
docker-compose.yml
Verbindet mehrere Docker-Hosts zu einem virtuellen Cluster.
docker swarm init
docker swarm join
docker stack deploy
docker-stack.yml
docker compose up
replicas
build: .
services: web: image: my-app:latest deploy: # <--- Spezifisch für Swarm replicas: 3 restart_policy: condition: on-failure update_config: parallelism: 1 delay: 10s
Zusammen erarbeiten wir die Aufgabe "Docker Voting App"
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm install --production COPY . . CMD ["node", "index.js"]
Weniger Programme, weniger Angriffsfläche.
FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ curl \ gnupg \ && curl -fsSL https://deb.nodesource.com | bash - \ && apt-get install -y nodejs && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["node", "index.js"]
FROM ubuntu:22.04 RUN apt-get update && apt-get install -y curl \ && curl -fsSL https://deb.nodesource.com | bash - \ && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/* # Eigenen Benutzer und Gruppe anlegen und verwenden RUN adduser --system --group --home /home/appuser appuser WORKDIR /app RUN chown appuser:appuser /app # Rechte setzen USER appuser # User appuser verwenden COPY --chown=appuser:appuser package*.json ./ # Berechtigungen geben RUN npm install --production COPY --chown=appuser:appuser . . CMD ["node", "index.js"] # App starten
FROM node:20-alpine # Verzeichnis erstellen und Berechtigungen setzen RUN mkdir -p /home/node/app && chown -R node:node /home/node/app WORKDIR /home/node/app # Zum Nicht-Root-Benutzer wechseln USER node # Dateien kopieren und dabei direkt den Besitzer ändern (--chown) COPY --chown=node:node package*.json ./ RUN npm install COPY --chown=node:node . . CMD ["node", "index.js"]
FROM node:20 AS builder WORKDIR /app COPY package*.json ./ COPY server.js ./ RUN npm install # Stage 2: Production stage "slim!" FROM node:20-slim WORKDIR /app COPY --from=builder /app . EXPOSE 3000 CMD ["npm", "start"]
# Datei mit Secret erstellen, Achtung: Bash-History leeren! echo "MY_PASSWORD=super-geheim-123" > .env.secret # Container starten und die Datei einbinden docker run -d \ --name meine-app \ --env-file .env.secret \ mein-node-image
*.secret
.gitignore
FROM node:20-alpine # PIIIP Falsch! ENV MY_PASSWORD="super-geheim-123"
fnox init # Ein Secret verschlüsselt hinzufügen (wird in fnox.toml gespeichert) fnox set DB_PASSWORD "mein-super-geheimes-passwort" # fnox entschlüsselt DB_PASSWORD und übergibt es an Docker fnox exec -- docker run -d \ --name meine-app \ -e DB_PASSWORD \ mein-node-image
# Datei mit Secret erstellen, Achtung: Bash-History leeren! echo "MY_PASSWORD=super-geheim-123" > .password.txt
services: app: image: mein-node-image secrets: - db_password secrets: db_password: file: ./password.txt
Lesen Sie "Docker Security" von der Woche 8
Gehen Sie durch alle Dockerfile Aufgaben durch und versuchen Sie mit KI Ihrer wahl die Aufgaben sicherer zu machen.
Dockerfile