Aufgabe 4: Ubuntu Server
Du startest einen Ubuntu-Server als Container und verbindest dich via SSH – ideal zum Testen von Linux-Befehlen in einer isolierten Umgebung.
Aufgaben
Abschnitt betitelt „Aufgaben“1. Projektordner erstellen
Abschnitt betitelt „1. Projektordner erstellen“mkdir ubuntu-labcd ubuntu-lab2. Docker Compose Datei erstellen
Abschnitt betitelt „2. Docker Compose Datei erstellen“services: ubuntu: image: ubuntu:24.04 container_name: ubuntu-lab hostname: ubuntu-server restart: unless-stopped stdin_open: true # Hält Container am Laufen tty: true # Terminal-Unterstützung ports: - "2222:22" # SSH auf Port 2222 volumes: - ubuntu_home:/home - ./shared:/shared # Geteilter Ordner mit Host command: > bash -c " apt-get update && apt-get install -y openssh-server sudo nano vim curl wget htop net-tools && useradd -m -s /bin/bash student && echo 'student:student123' | chpasswd && usermod -aG sudo student && mkdir -p /run/sshd && echo 'PermitRootLogin no' >> /etc/ssh/sshd_config && echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config && /usr/sbin/sshd -D "
volumes: ubuntu_home:3. Geteilten Ordner erstellen
Abschnitt betitelt „3. Geteilten Ordner erstellen“mkdir sharedecho "Hallo vom Host!" > shared/test.txt4. Container starten
Abschnitt betitelt „4. Container starten“docker compose up -dWarte bis du in den Logs siehst:
Server listening on 0.0.0.0 port 22.5. Via SSH verbinden
Abschnitt betitelt „5. Via SSH verbinden“ssh student@localhost -p 2222Passwort: student123
Bei der Frage “Are you sure you want to continue connecting?” → yes eingeben.
ssh student@localhost -p 2222Passwort: student123
- Host:
localhost - Port:
2222 - Connection Type: SSH
- Open → Login:
student/ Password:student123
6. System erkunden
Abschnitt betitelt „6. System erkunden“Nach dem Login:
# Wer bin ich?whoami
# System-Infouname -acat /etc/os-release
# Installierte Tools testenhtop # Prozess-Monitor (q zum Beenden)curl ifconfig.me # Externe IP
# Geteilten Ordner prüfencat /shared/test.txt
# Datei erstellen (bleibt nach Neustart)echo "Hallo aus dem Container!" > ~/meine-datei.txt7. Sudo-Rechte testen
Abschnitt betitelt „7. Sudo-Rechte testen“# Als root arbeitensudo su -
# Paket installierenapt install -y neofetchneofetch
# Zurück zum normalen Userexit8. Direkt in Container (ohne SSH)
Abschnitt betitelt „8. Direkt in Container (ohne SSH)“Alternative ohne SSH:
# Als studentdocker exec -it -u student ubuntu-lab bash
# Als rootdocker exec -it ubuntu-lab bash9. Container stoppen
Abschnitt betitelt „9. Container stoppen“# Stoppen (Daten bleiben)docker compose stop
# Entfernen (Daten im Volume bleiben)docker compose down
# Alles löschen inkl. Datendocker compose down -vSchnelle Version (ohne SSH)
Abschnitt betitelt „Schnelle Version (ohne SSH)“Falls du nur schnell eine Ubuntu-Shell brauchst:
services: ubuntu: image: ubuntu:24.04 container_name: ubuntu-quick stdin_open: true tty: true volumes: - ./shared:/shareddocker compose up -ddocker exec -it ubuntu-quick bashFragen zur Reflexion
Abschnitt betitelt „Fragen zur Reflexion“- Warum verwenden wir Port
2222statt22? - Was ist der Unterschied zwischen
docker execund SSH-Verbindung? - Warum sollte man
PermitRootLogin nosetzen? - Was passiert mit den Daten in
/homenachdocker compose down?
Troubleshooting
Abschnitt betitelt „Troubleshooting“”Connection refused”
Abschnitt betitelt „”Connection refused”“Container noch nicht bereit. Warte und prüfe Logs:
docker compose logs -f ubuntu“Permission denied”
Abschnitt betitelt „“Permission denied”“Falsches Passwort. Default: student123
SSH-Key Problem bei erneutem Verbinden
Abschnitt betitelt „SSH-Key Problem bei erneutem Verbinden“# Alten Key entfernenssh-keygen -R "[localhost]:2222"Nächste Schritte
Abschnitt betitelt „Nächste Schritte“Zurück zur Lab-Übersicht →