von Hendrik | Juli 1, 2025 | Scripts & Snippets
Docker ist heute das Herzstück vieler moderner Software- und Entwicklungsumgebungen – auch auf Ubuntu 24.04. Mit Containern lässt sich Software unabhängig, schnell, sicher und flexibel bereitstellen und verwalten. Gerade für Entwickler, Admins und DevOps-Teams ist das Wissen um die wichtigsten Docker-Befehle Gold wert.
Neben den bekannten Kommandos gibt es viele Power-Snippets und clevere One-Liner, die den Alltag enorm erleichtern – ob beim Starten, Stoppen, Debuggen, Überwachen oder Aufräumen von Containern und Images.
Im folgenden Abschnitt findest du eine Zusammenstellung der wichtigsten und nützlichsten Docker-Befehle für Ubuntu 24.04, inklusive hilfreicher Tipps für die tägliche Arbeit.
1. Images & Container verwalten
# Liste aller laufenden Container
docker ps
# Liste aller Container (auch gestoppte)
docker ps -a
# Liste aller lokalen Images
docker images
# Image herunterladen (pull)
docker pull ubuntu:24.04
# Container starten (im Hintergrund, mit Name)
docker run -d --name mein-nginx nginx:latest
# Container mit Shell starten (interaktiv)
docker run -it --rm ubuntu:24.04 bash
2. Container steuern
# Einen Container stoppen
docker stop <containername>
# Einen Container starten (der gestoppt wurde)
docker start <containername>
# Einen Container entfernen (löschen)
docker rm <containername>
# Ein Image entfernen
docker rmi <imagename>
3. In laufende Container einsteigen
# Shell in einen laufenden Container bekommen
docker exec -it <containername> bash
# (oder sh, wenn bash nicht installiert ist)
4. Logs & Ressourcen
# Logs eines Containers live verfolgen
docker logs -f <containername>
# Nur die letzten 100 Zeilen anzeigen
docker logs --tail 100 <containername>
# Ressourcenverbrauch aller Container anzeigen
docker stats
5. Dateien kopieren
# Datei vom Host in den Container kopieren
docker cp /pfad/zur/datei <containername>:/pfad/im/container
# Datei aus dem Container auf den Host kopieren
docker cp <containername>:/pfad/im/container /ziel/pfad/auf/dem/host
6. Netzwerk & Ports
# Alle Docker-Netzwerke anzeigen
docker network ls
# Ins Netzwerk eines Containers „eintreten“ (z. B. für Troubleshooting)
docker run -it --network container:<containername> alpine sh
7. Volumes
# Alle Volumes anzeigen
docker volume ls
# Ein Volume inspizieren
docker volume inspect <volumename>
# Ungenutzte Volumes löschen
docker volume prune
8. Clean-Up & Platz sparen
# Alle gestoppten Container löschen
docker container prune
# Nicht mehr verwendete Images löschen
docker image prune
# ALLES Unbenutzte löschen (Container, Images, Volumes, Netzwerke)
docker system prune -a
9. Docker Compose
# Container aus docker-compose.yml starten
docker compose up -d
# Logs aller Dienste anzeigen
docker compose logs -f
# Services stoppen und entfernen
docker compose down
# Ein einzelnes Service neustarten
docker compose restart <servicename>
10. Weniger bekannt, aber nützlich
# Prozessliste eines Containers ansehen (wie top)
docker top <containername>
# Umgebungsvariablen eines Containers inspizieren
docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' <containername>
# Änderungen am Dateisystem eines laufenden Containers anzeigen
docker diff <containername>
# Einen neuen Image-Tag vergeben (taggen)
docker tag <image_id> meinrepo/meinimage:neuer-tag
# Ein Image exportieren (z. B. für Backup oder Transfer)
docker save -o image.tar <imagename>
# Importieren
docker load -i image.tar
# Einen Befehl ausführen, wenn der Container startet (override entrypoint)
docker run --entrypoint /bin/sh -it <image>
11. Troubleshooting
# Container Netzwerk-Probleme debuggen
docker exec -it <containername> ping 8.8.8.8
# Health-Status von Containern sehen
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}\t{{.Image}}'
# Aufräumen, alles was nicht genutzt wird
docker system prune -a --volumes
12. Extra: Shell-Tools für Vielnutzer
# Bash-Completion für Docker aktivieren (sehr nützlich!)
sudo apt install bash-completion
echo "source /usr/share/bash-completion/completions/docker" >> ~/.bashrc
# Fuzzy-Auswahl für Container/Images mit fzf (bei vielen Containern/Images mega hilfreich!)
docker ps -a --format '{{.Names}}' | fzf | xargs -I {} docker logs -f {}
13. Quick-One-Liner: „Alle Container löschen“ (mit Vorsicht!)
bash
Kopieren
Bearbeiten
docker rm -f $(docker ps -aq)
(Löscht ALLE Container, auch laufende!)
von Hendrik | Juni 15, 2025 | Scripts & Snippets
Tools installieren
Die wichtigsten Tools:
-
ImageMagick (mächtig, wandelt/skalieren/umbenennen/etc.)
-
jpegoptim (optimiert JPEGs)
-
optipng (optimiert PNGs)
-
mogrify (Teil von ImageMagick, arbeitet auf Stapel)
Installiere alles (Ubuntu/Debian):
sudo apt update
sudo apt install imagemagick jpegoptim optipng
Bilder skalieren und konvertieren (ImageMagick)
Beispiel: Alle Bilder auf maximale Breite 1200px bringen (Höhe automatisch, Verhältnis bleibt)
mogrify -resize 1200x1200\> -path ./output/ *.jpg *.jpeg *.png
-
Alle Bilder werden kopiert und skaliert ins Verzeichnis output/
.
-
Nur Bilder, die größer sind, werden verkleinert.
-
*.jpg *.jpeg *.png
funktioniert mit Bash, ansonsten einzeln laufen lassen.
Komprimieren / Optimieren
JPEG:
jpegoptim --max=80 --strip-all ./output/*.jpg
PNG:
- Starke Kompression (verlustfrei bei PNG)
optipng -o7 ./output/*.png
Optional: In WebP konvertieren
WebP bietet noch bessere Kompression für’s Web:
- Erzeugt WebP-Bilder mit Qualität 80
sudo apt install webp
cd output/
for i in *.jpg *.jpeg *.png; do
cwebp -q 80 "$i" -o "${i%.*}.webp"
done
Dateinamen anpassen (optional)
Um Leerzeichen zu vermeiden oder Kleinschreibung zu erzwingen:
#!/bin/bash
# --- Variablen und Hilfetext ---
SRC="$1"
DST="${2:-output}"
if [ -z "$SRC" ] || [ ! -d "$SRC" ]; then
echo "Nutzung: $0 QUELLORDNER [ZIELORDNER]"
echo "Beispiel: $0 ./meine_bilder ./fertig_fürs_web"
exit 1
fi
mkdir -p "$DST"
# --- Skalieren ---
echo "Skaliere Bilder aus '$SRC' nach '$DST' (max 1200px)..."
mogrify -resize 1200x1200\> -path "$DST" "$SRC"/*.jpg "$SRC"/*.jpeg "$SRC"/*.png
# --- JPEG optimieren ---
echo "Optimiere JPEGs..."
jpegoptim --max=80 --strip-all "$DST"/*.jpg "$DST"/*.jpeg
# --- PNG optimieren ---
echo "Optimiere PNGs..."
optipng -o7 "$DST"/*.png
# --- WebP optional (auskommentieren, falls nicht benötigt) ---
# echo "Konvertiere nach WebP..."
# for i in "$DST"/*.jpg "$DST"/*.jpeg "$DST"/*.png; do
# [ -e "$i" ] || continue
# cwebp -q 80 "$i" -o "${i%.*}.webp"
# done
echo "Fertig! Optimierte Bilder liegen in: $DST"
Aufrufen mit Quell- und Zielordner:
./bilder-weboptimieren.sh ./mein_bilderordner ./fertig_fürs_web
von Hendrik | Juni 15, 2025 | Scripts & Snippets
Spezielle und weniger bekannte Code-Snippets für Vim
Fügt die Zahlen von 1 bis 10 in aufeinanderfolgenden Zeilen ein.
:put =range(1, 10)
HTML-Tags automatisch um Text herum einfügen
Markiere einen Textbereich, drücke <leader>t
und gib einen HTML-Tag ein, um den markierten Bereich in diesen Tag einzuschließen.
vnoremap <leader>t <Esc>`<i<<C-r>=input("Tag: ")<CR>><Esc>`>a</<C-r>=input("Tag: ")<CR>><Esc>
Schnelle Dateinavigation mit Register
Zeigt alle geöffneten Buffers an und erlaubt schnelles Umschalten zwischen ihnen.
nnoremap <leader>b :ls<CR>:b<Space>
Zeilen in alphabetischer Reihenfolge sortieren
Markiere die gewünschten Zeilen im visuellen Modus und führe den Befehl aus, um sie alphabetisch zu sortieren.
:'<,'>sort
Zeilen innerhalb eines Blocks kommentieren
Markiere einen Block und drücke <leader>c
, um alle Zeilen zu kommentieren (hier mit //
).
xnoremap <leader>c :s/^/\/\/ /<CR>
Wörter umkehren
Dieser Befehl kehrt jedes Wort in der Datei um.
:%s/\w\+/\=join(reverse(split(submatch(0), '.\zs')), '')/g
Umschalten zwischen relativen und absoluten Zeilennummern
Drücke <leader>n
, um zwischen absoluten und relativen Zeilennummern zu wechseln.
nnoremap <leader>n :set invnumber invrelativenumber<CR>
Nur Zahlen in einem Text extrahieren
Löscht alle Zeilen, die keine Zahlen enthalten.
:g/[^0-9]/d
Anpassen der .vimrc mit zusätzlichen Funktionen
" Grundlegende Einstellungen
set nocompatible " Deaktiviert Kompatibilität mit Vi
set number " Zeilennummern anzeigen
set relativenumber " Relative Zeilennummern anzeigen
set showcmd " Zeigt eingegebene Befehle unten an
set cursorline " Hervorheben der aktuellen Zeile
set wildmenu " Bessere Autovervollständigung im Befehlsmodus
set hlsearch " Suchergebnisse hervorheben
set incsearch " Inkrementelle Suche aktivieren
set ignorecase " Suche ohne Berücksichtigung der Groß-/Kleinschreibung
set smartcase " Berücksichtigt Groß-/Kleinschreibung, wenn Großbuchstaben verwendet werden
set clipboard=unnamedplus " Zwischenablage mit System teilen
" Tab- und Einrückungseinstellungen
set expandtab " Tabs in Spaces umwandeln
set tabstop=4 " Tabweite auf 4 Spaces setzen
set shiftwidth=4 " Einrückung auf 4 Spaces setzen
set autoindent " Automatische Einrückung aktivieren
" Statuszeile immer anzeigen
set laststatus=2
" Dateitypabhängige Einstellungen
autocmd FileType python setlocal expandtab tabstop=4 shiftwidth=4
autocmd FileType make setlocal noexpandtab
" Entfernen von Leerzeichen am Zeilenende beim Speichern
autocmd BufWritePre * %s/\s\+$//e
" Automatische Speicherung bei Fokusverlust
autocmd FocusLost * :wa
" Cursorposition beim erneuten Öffnen einer Datei wiederherstellen
autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
" Schnelles Umschalten zwischen letzten zwei Buffern
nnoremap <leader><leader> <C-^>
" Hintergrundfarbe je nach Tageszeit wechseln
autocmd VimEnter * if strftime("%H") < 18 | colorscheme morning | else | colorscheme evening | endif
" Bessere Navigation für lange Zeilen
nnoremap j gj
nnoremap k gk
" Highlight der aktuellen Zeile im Einfügemodus deaktivieren
autocmd InsertEnter * set nocursorline
autocmd InsertLeave * set cursorline
" Zahlenreihen einfügen
command! -nargs=1 NumberSeq put =range(1, <args>)
.vimrc speichern
Füge den obigen Inhalt ein und speichere die Datei mit :wq
Lade die Konfiguration neu, indem du :source ~/.vimrc
in Vim ausführst, oder starte Vim neu.
vim ~/.vimrc