Modul 169 - Docker Images / Volumes

Docker Images / Volumes

Modul 169

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Inhalt

  • Repetition

  • Dockerfile
    Befehle / Caching / Multistage Build

  • Übungen
    zu Docker Image und Dockerfile

  • Docker Hub

    • eigene Apps containerisieren
  • Docker Volumen / Mounts
  • Übungen
    zu Docker Volumen / Mounts
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Regeln 👮‍♀️

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

§1 Fokus und Geräte

Die digitalen Geräte: 📱, 💻, etc.

  • immer nur auf Aufforderung der Lehrkraft

  • immer nur zur Bearbeitung der gestellten Aufgaben

Private Aktivitäten sind untersagt: unter anderem Social Media, Spiele, Videos, private E-Mails/Chats, Surfen, Shoppen, etc.

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

§2 Ruhe und Umgangsformen

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

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Was versteht Ihr unter Git?

Was ist der Unterschied von Git und GitHub?

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Wofür dient ein Dockerfile?

Wieso sollte man es mit Git versionieren?

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

📖 Auftrag

Lesen Sie auf der Modulwebseite Woche 2

  • 🧬 Einzelarbeit
  • 🕐 15 Min
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

📝 Auftrag

Machen Sie auf der Modulwebseite Woche 2

  • 🧬 Einzelarbeit
  • 🕐 45 Min
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Demo: Docker Hub

docker login

docker tag <image-name> <username>/<image-name:tag>

docker push <user-name>/<image-name:tag>
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

📝 Auftrag

Machen Sie auf der Modulwebseite Woche 2

  • 🧬 Einzelarbeit
  • 🕐 bis zur grossen Pause
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Docker Volumes & Bind Mounts

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Demo: Daten im Container

# -it -> interactive shell mode   -w -> workdir
docker run -it --name volume-test -w /app ubuntu
echo "Hallo Welt" > hallo.txt
ls -la
cat hallo.txt
exit

docker container rm volume-test
docker run -it --name volume-test -w /app ubuntu
ls -la

→ Was wird das Resultat sein?

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Wie können Daten eines Containers erhalten bleiben?

💡 Wenn ein Container gelöscht wird, sind die Daten im Container weg.

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

📖 Auftrag

Lesen Sie auf der Modulwebseite Woche 3

  • 🧬 Einzelarbeit
  • 🕐 15 Min
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Docker Volumes vs Bind Mounts

Merkmal Docker Volumes Bind Mounts
Verwaltung Von Docker verwaltet. Vom Host verwaltet.
Speicherort Im Docker-Standardverzeichnis. Pfad im Host-Dateisystem.
Portabilität Hoch (kann einfach zwischen Hosts verschoben werden). Gering (abhängig vom Host).
Sicherheit Besser isoliert. Weniger isoliert, da direkt auf den Host zugegriffen wird.
Performance Gut, optimiert für Docker. Langsam bei vielen Files, Sync mit Host-System.
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Docker Volumes: Vor- und Nachteile

Vorteile

  • Einfache Verwaltung

  • Portabilität

  • bessere Performance

Nachteile

  • weniger Kontrolle über den Speicherort

  • zusätzliche Komplexität

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Bind Mounts: Vor- und Nachteile

Vorteile

  • Direkter Zugriff auf Host-Dateisystem

  • Flexibilität

  • Einfachheit bei Entwicklung

Nachteile

  • weniger portabel

  • Sicherheitsrisiken

  • Abhängigkeit von Host-Umgebung

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Wann welche Variante?

Volumes

  • Docker Volumes in Produktion und wann immer möglich

  • Docker Volumes immer für Daten die nicht in Git versionisiert sind

    • Datenbanken und Co.

Bind Mounts

  • Bind Mounts bei der Entwicklung für Quellcode und Konfigurationsdateien die selbst in Git versionisiert sind.

  • Nie in Produktion (Ausnahme siehe oben)!

BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

Demo: Docker Volume und Bind Mounts

docker volume ls
docker volume create sqlite-volume
docker volume inspect sqlite-volume

docker run -it --rm -w /apps alpine/sqlite:3.51.2 test.db
docker run -it --rm -w /apps -v sqlite-volume:/apps alpine/sqlite:3.51.2 test.db
docker run -it --rm -w /apps -v .:/apps alpine/sqlite:3.51.2 test.db
CREATE TABLE contacts (
    contact_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
INSERT INTO contacts (contact_id, name) VALUES (2, 'New Name');
INSERT INTO contacts (contact_id, name) VALUES (1, 'Name');
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen
Modul 169 - Docker Images / Volumes

📝 Auftrag

Machen Sie die Übungen unter Woche 3

  • 🧬 Einzelarbeit
  • 🕐 bis zum Ende
BBZBL / Lukas Hodel / Michael Salm / Services mit Containern bereitstellen