hassle_with_rootless_docker_on_a_debian_bookworm_based_raspberrypi_4b

Das Rumgewürge mit Rootless Docker auf einem RaspberryPi 4

Verwendet als OS wird DietPi auf Debian Bookworm (12) Basis.

  • Headless Server mit Rootless Docker.
  • Unprivileged User docker
    • mit gocryptfs-verschlüsseltem Home-Verzeichnis
    • damit die Daten bei physischem Raub des Geräts zumindest unzugänglich bleiben.
  • Das automatische Einhängen des gocryptfs-verschlüsselten Verzeichnissen auf die Home-Partition funktioniert nicht
    • Einerseits unter Headless eh nicht, weil das mit ssh-logins nicht einfach so funktioniert
    • Und ich will nirgends das Passwort ablegen.
    • Also logge ich mich mit sudo -su docker als docker ein.
    • Mit gocryptfs -nonempty -allow_other /home/docker.cipher /home/docker hänge ich das Verzeichnis ein
      • -nonempty ist superwichtig, weil natürlich die ganzen Dot-Files sonst das Einhängen verhindern.
      • -allow_other war zwischenzeitlich jedenfalls notwendig, weil Docker sonst nicht startete. Aber vielleicht ist das nach Lösung all der folgenden Probleme auch schon nicht mehr notwendig ...
  • ABER! Mit sudo -su einloggen geht nicht, weil dann nicht auf systemctl zugegriffen werden kann und Docker nicht funktioniert.
    • stattdessen mit machinectl shell docker@ einloggen, dann geht's.
      • Was aber auch zunächst nicht klappte, weil ich docker ohne Shell angelegt hatte
      • Also in /etc/shadow docker /bin/bash gegeben und schon geht's.
  • Rootless Docker scheint zu funktionieren bricht aber bei docker pull ab.
    • Denn mit gocryptfs (wie mit NFS) funktioniert das notwendige overlayfs nicht richtig.
    • Das Standard-Verzeichnis für das lokale Docker muss von ~/.local/share/docker verlegt werden.
    • Also außerhalb von /home/docker ein Verzeichnis docker-share angelegt
    • und /home/docker/.config/docker/deamon.json angelegt und dort {"data-root":"/docker-share"} eingetragen.
      • WICHTIG: Jetzt noch mit systemctl --user restart docker den Docker Dienst neustarten. Dann sollte alles wie geplant gehen.
  • Fast alles. Der Nginx Proxy Manager Container möchte gern die Ports 80-443 verwenden können - das geht aber ohne Rootrechte zunächst nicht.
    • Darum einmal mit Systemrechten sysctl net.ipv4.ip_unprivileged_port_start=80 eingeben
    • und den überflüssigen Portbereich mit iptables -I INPUT -p tcp --dport 444:1024 -j DROP; iptables -I INPUT -p udp --dport 444:1024 -j DROP blockieren.

Das war sicher noch nicht alles, aber zumindest den Rotz muss ich jetzt erstmal nicht mehr nachsehen ...

  • hassle_with_rootless_docker_on_a_debian_bookworm_based_raspberrypi_4b.txt
  • Zuletzt geändert: 2024/06/25 13:51
  • von homer