Zurück zur Übersicht

Begriff

Docker Socket

Containerization Security S3
2 Quellen 1 Lernpfad 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Der Docker Socket (/var/run/docker.sock) ist das Ohr des Docker Daemons. Hier hört er auf Befehle. Normalerweise flüstert nur der docker CLI Befehl ("Starte Container!") in dieses Ohr. Aber: Du kannst dieses Ohr auch in einen Container hineinlegen (mounten). Warum? Damit ein Container (z. B. Jenkins oder Portainer) andere Container steuern kann. "Ich bin Jenkins (im Container) und ich will einen Test-Container starten." Das nennt man Docker-in-Docker (via Socket Binding).

Merksatz: Ein Unix-Domain-Socket, der als primäre Kommunikationsschnittstelle für die Docker-API dient. Zugriff auf diesen Socket ist gleichbedeutend mit Root-Zugriff auf dem Host-System.


Quick-Check

  1. Was ist DooD?
    Docker-out-of-Docker. Das Verfahren, den Socket zu mounten (-v /var/run/docker.sock:...), damit der Container den Host-Docker nutzt. Im Gegensatz zu "DinD" (Docker-in-Docker), wo wirklich ein neuer Daemon im Container läuft (verschachtelt, langsam, privilegiert). DooD ist meist performanter.
  2. Dateirechte?
    Der Socket gehört root:docker. Deshalb musst du deinen User zur Gruppe docker hinzufügen (usermod -aG docker user), um ohne sudo docker nutzen zu können. (Warnung: Das macht deinen User effektiv zum Root-User).
  3. Windows Named Pipe?
    Auf Windows gibt es keine Unix Sockets. Dort heißt es //./pipe/docker_engine. Das Prinzip (API Endpoint) und das Risiko sind identisch.