dockerize, uids, ldap, nss / wie haltet Ihr die UIDs in unterschiedlichen Docker Containern konsistent?

  • Bin am Planen, wie ich meine diversen Server (definitiv zu viele) konsolidieren und die Services dann durch docker isolieren kann.


    Ein Knackpunkt ist dabei:

    In manchen Fällen ist es sinnvoll, volumes zwischen Host und Docker oder zwischen Docker Instanzen zu sharen. Beispiel: Letsencrypt wildcards.

    Dabei komme ich schnell an Grenzen, wenn es um Zugriffsrechte gibt. benannte Gruppen und user (www-data, Debian-exim, letsencrypt-readers, dovecot, ...) haben erwartbar in den Containern unterschiedliche UIDs, GIDs.

    Auch eine zentralisierte Ablage von ssh keys wäre schön.


    Die Suche im Netz bringt ein paar verkrüppelte Lösungsvorschläge (chown Aufrufe mit Environment-Parametern in docker-compose als Beispiel).


    Wie macht Ihr das?


    Was wäre von einer ldap /nss basierten Lösung zu halten ? Der LDap Dienst sollte halt einigermaßen verfügbar sein, aber das ist ohnedies immer so.

  • Stichworte, die ich hier mal nennen kann:
    * Docker Secrets (https://docs.docker.com/engine/swarm/secrets/)
    * Kubernetes Secrets (https://kubernetes.io/docs/concepts/configuration/secret/)

    Gerade bei mehreren Container lohnt es sich, solche Daten in Secrets zu packen und diese entsprechend den Containern zur Verfügung zu stellen. Diese können dann als File oder Env ausgelesen werden. Kubernetes wird dann vermutlich für dich etwas zu viel, sein, aber ein Docker Swarm lässt sich auch problemlos auf einem Node betreiben (ok, Kubernetes auch, ist aber deutlich komplexer). Das ist zumindest die Vorgehensweise bei Containern.