SQL, Docker 2 aus Coddy erweitert

This commit is contained in:
2026-09-04 08:07:47 +02:00
parent c48157c54c
commit f2fe91fe30
3 changed files with 136 additions and 7 deletions
+74
View File
@@ -0,0 +1,74 @@
# Docker
## Was ist Docker
**Docker** ist ein Tool, um eine Anwendung zusammen mit allem, was sie zum Ausführen benötigt (Code, Bibliotheken, Einstellungen), in einer einzigen Einheit namens **Container** zu verpacken.
Ein Container läuft immer auf die gleiche Weise, egal ob auf Ihrem Laptop, dem Rechner eines Teamkollegen oder einem Server in der Cloud. Dies löst das klassische „Auf meinem Rechner funktioniert es“-Problem.
Sie steuern Docker über das Terminal mit dem `docker`-Befehl.
Um zu prüfen, ob Docker verfügbar ist und um die Version anzuzeigen, führen Sie folgenden Befehl aus:
```bash
docker --version
```
Dies gibt die installierte Docker-Version aus und bestätigt, dass das Tool einsatzbereit ist.
## Images und Container
Docker hat zwei Kernkonzepte, die zusammenarbeiten: **Images** und **Container**.
Ein **Image** ist eine schreibgeschützte Vorlage (ein Snapshot eines Dateisystems plus Anweisungen dazu, was ausgeführt werden soll). <mark>Ein **Container** ist eine laufende Instanz</mark>, die aus einem Image erstellt wurde. Ein Image kann viele Container starten, so wie eine Klasse viele Objekte erstellen kann.
Der einfachste Weg, dies zu sehen, besteht darin, einen Container aus dem `hello-world` Image auszuführen:
```bash
docker run hello-world
```
Docker nimmt das `hello-world` Image, startet einen Container daraus, und der Container gibt eine kurze Willkommensnachricht aus, bevor er beendet wird.
## Images pullen
Bevor Sie einen Container ausführen können, benötigt Docker das Image auf Ihrem Rechner. Der Befehl `docker pull` lädt ein Image aus einer Registry (einer öffentlichen Bibliothek von Images) herunter:
```bash
docker pull alpine
```
Docker ruft das Image ab und meldet jede Ebene, sobald sie eintrifft, und schließt mit einer Statuszeile ab. Wenn Sie keine Version angeben, lädt Docker standardmäßig den Tag **latest** herunter.
Sie können eine spezifische Version mit `image:tag` anfordern:
```bash
docker pull alpine:3.20
```
Das Pulling eines bereits vorhandenen Images bestätigt <mark>lediglich</mark>, dass es <mark>aktuell</mark> ist, anstatt es erneut herunterzuladen.
## Images auflisten
Um zu sehen, welche Images lokal verfügbar sind, verwendet man `docker images`:
```bash
docker images
```
Die Ausgabe ist eine Tabelle mit einer Zeile pro Image:
```bash
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest c8be21c88f2a 1 day ago 7.34MB
ubuntu latest 75afc20638b6 4 days ago 81.8MB
```
- **REPOSITORY** und **TAG** benennen das Image
- **IMAGE ID** ist eine kurze eindeutige Kennung
- **SIZE** gibt an, wie viel Speicherplatz das Image belegt
Um die Liste auf ein Repository einzugrenzen, übergibt man dessen Namen:
`docker images alpine` zeigt nur die `alpine`-Tags an.
+6 -4
View File
@@ -531,8 +531,6 @@ openssl req -new -days 1095 -key dlsea3tim01.server.key -out dlsea3tim01.server.
openssl req -text -in dlsea3tim01.server.csr|less openssl req -text -in dlsea3tim01.server.csr|less
Bei Apache/mod_ssl ist der Unterschied: Bei Apache/mod_ssl ist der Unterschied:
- **`SSLCertificateFile`** → enthält das **öffentliche Zertifikat** des Servers. Darin stecken u. a. der öffentliche Schlüssel, Domainname und die Signatur der CA. Dieses Zertifikat wird beim TLS-Handshake an den Client geschickt. - **`SSLCertificateFile`** → enthält das **öffentliche Zertifikat** des Servers. Darin stecken u. a. der öffentliche Schlüssel, Domainname und die Signatur der CA. Dieses Zertifikat wird beim TLS-Handshake an den Client geschickt.
@@ -557,8 +555,6 @@ Dies sind optionale Flags, die das Verhalten des SCP-Befehls verändern. Sie kö
**-v:** Ausführlicher Modus – zeigt Debugging-Meldungen während der Übertragung an. **-v:** Ausführlicher Modus – zeigt Debugging-Meldungen während der Übertragung an.
**-o:** Übergibt eine Option an den SSH-Client. Sie kann verwendet werden, um die strenge Prüfung des Hostschlüssels zu deaktivieren. **-o:** Übergibt eine Option an den SSH-Client. Sie kann verwendet werden, um die strenge Prüfung des Hostschlüssels zu deaktivieren.
# Linux: `/etc/passwd` und `/etc/shadow` # Linux: `/etc/passwd` und `/etc/shadow`
Unter Linux werden Benutzerinformationen hauptsächlich in den Dateien `/etc/passwd` und `/etc/shadow` gespeichert. Unter Linux werden Benutzerinformationen hauptsächlich in den Dateien `/etc/passwd` und `/etc/shadow` gespeichert.
@@ -1016,3 +1012,9 @@ Zusammengefasst:
## Merksatz ## Merksatz
> **`/etc/passwd` beschreibt den Benutzer, `/etc/shadow` beschreibt vor allem seinen Passwort- und Ablaufstatus.** > **`/etc/passwd` beschreibt den Benutzer, `/etc/shadow` beschreibt vor allem seinen Passwort- und Ablaufstatus.**
###############
Änderungen an Profil-Dateien wie `~/.bashrc` erfordern eine neue Shell-Sitzung oder das explizite Ausführen von `source ~/.bashrc`, damit sie in der aktuellen Sitzung wirksam werden.
+55 -2
View File
@@ -938,8 +938,61 @@ Das Ergebnis sollte nur die relevanten Sitze enthalten.
Bevor Sie mit der Lösung der Herausforderung beginnen, werfen Sie einen Blick auf die Tabellendaten. **Sie sind nicht sauber**. Die Spalten `is_next_gov` und `is_spoke_bad` enthalten Einsen und Nullen sowie auch yes's und no's. Bevor Sie mit der Lösung der Herausforderung beginnen, werfen Sie einen Blick auf die Tabellendaten. **Sie sind nicht sauber**. Die Spalten `is_next_gov` und `is_spoke_bad` enthalten Einsen und Nullen sowie auch yes's und no's.
select seat from ministers where (seat % 2 = 0) and (is_spoke_bad = 0 or is_spoke_bad = 'no' )and (is_next_gov = 1 or is_next_gov = 'yes'); select seat from ministers where (seat % 2 = 0) and (is_spoke_bad = 0 or is_spoke_bad = 'no' )and (is_next_gov = 1 or is_next_gov = 'yes');
############################################################## ##############################################################
Recap - Police Criminal Arrest
Challenge
Einfach
> Verfügbare Tabellen und Spalten:
>
> - `**police_report**`**:** `**name**`**,** `**report**`**,** `**map**`**,** `**severe_score**`
Rufe die Namen der **5 schwersten Kriminellen** ab und sortiere sie nach `severe_score` in absteigender Reihenfolge
Ein schwerer Krimineller ist jemand, der alle folgenden Kriterien erfüllt:
- `report` ist entweder null oder `report` enthält einen der folgenden Buchstaben: `g`, `b`, `G` oder `B`.
- `map` ist einer der folgenden Orte: `Caerleon`, `Dewsbury`, `Kirkwall`, `Findochty`.
Benenne die Spalte als `worst_criminals`.
select name as worst_criminals from police_report where (report like '%g%' or report like '%b%' or report is null ) and map in ('Caerleon', 'Dewsbury', 'Kirkwall', 'Findochty') order by severe_score desc limit 5
##############################################################
Recap - Bar Beverage Container
Challenge
Einfach
> Verfügbare Tabellen und Spalten:
>
> - `**beverages**`**:** `**id**`**,** `**current_year**`**,** `**expiration_year**`
Ihre Bar lagert eine umfangreiche Auswahl an Säften, und Sie müssen feststellen, welche davon Aufmerksamkeit benötigen. Identifizieren und sortieren Sie diese Säfte basierend auf den folgenden klaren Kriterien:
1. `Old Expired Juices`
1. Säfte, deren Ablaufjahr MEHR als 6 Jahre vor dem aktuellen Jahr liegt (`current_year - expiration_year > 6`)
2. Diese müssen sofort recycelt werden
2. `Almost Expired Juices`
1. Säfte, die im aktuellen Jahr ablaufen
2. ODER Säfte, die nächstes Jahr ablaufen (`expiration_year = current_year + 1`)
3. Diese müssen zur Erneuerung geschickt werden
Führen Sie diese Schritte aus:
- Extrahieren Sie die IDs der Säfte, die eines dieser Kriterien erfüllen
- Benennen Sie die ID-Spalte in 'to_renew' um
- Sortieren Sie die Ergebnisse nach Bearbeitungs-Priorität:
- Dringendste zuerst (älteste abgelaufene Säfte)
- Dann fast abgelaufene Säfte
- Verwenden Sie (current_year - expiration_year) zum Sortieren