
Ich möchte ein Docker-Image docker build
ohne Root-Rechte erstellen.
Ich folgte demamtliche Dokumentationum die Neuzuordnung des Benutzernamensraums einzurichten, aber wenn ich docker image ls
(oder docker build -t myapp .
oder docker run hello-world
) ausführe, wird der folgende Fehler angezeigt:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied
Befolgen Sie die Anweisungen im AbschnittAktivieren Sie users-remap auf dem Daemon, ich habe "userns-remap": "default"
in konfiguriert /etc/docker/daemon.json
sowie Bereiche für diesen Benutzer in /etc/subuid
und erstellt /etc/subgid
.
Der Docker-Daemon läuft, wurde über systemd gestartet und die Protokolldateien zeigen, dass der Namespace mit dem dockremap
Benutzer aktiviert ist:
level=info msg="User namespaces: ID ranges will be mapped to subuid/subgid ranges of: dockremap"
level=info msg="[graphdriver] using prior storage driver: overlay2"
level=info msg="Loading containers: start."
level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
level=info msg="Loading containers: done."
level=warning msg="Not using native diff for overlay2, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled" storage-driver=overlay2
level=info msg="Docker daemon" commit=659604f9ee graphdriver=overlay2 version=24.0.2
level=info msg="Daemon has completed initialization"
level=info msg="API listen on /run/docker.sock"
Started Docker Application Container Engine.
Wenn ich jetzt jedoch als normaler Benutzer den Docker-Befehl ausführe, tritt der oben angezeigte Berechtigungsfehler auf.
Die Berechtigungen für die im Fehler erwähnte Datei:
0 srw-rw---- 1 root docker 0 Jul 14 13:35 /var/run/docker.sock
Habe ich die Anleitung falsch verstanden und der Docker-Befehl muss vom dockremap
Benutzer ausgeführt werden? Folgendes gibt allerdings nichts aus: sudo su dockremap -c "docker image ls"
. Außerdem kann ich mich nicht als dockremap
Benutzer anmelden, selbst nachdem ich ein Passwort dafür festgelegt habe.
Meine Frage ist also: Was erwartet mich, wenn ich die Einrichtung gemäß der Dokumentation befolgt habe und wie kann ich den docker
Befehl anschließend ohne Root verwenden, insbesondere zum Erstellen eines Images?