Warum nicht meine udev-Regeln arbeiten in einen Laufenden docker-container?
Habe ich udev Regeln geschrieben zum erstellen von SYMLINKS, wenn ein Gerät angeschlossen ist. Die Regeln sind in Ordnung arbeiten auf der host-Maschine, aber wenn ich ein container mit den gleichen Regeln installiert, in /etc/udev/rules.d, Sie arbeiten nicht in meinem container.
Ich versuche zu erkennen, wenn eine externe Festplatte angeschlossen ist und erstellen einen entsprechenden symlink. /dev/sdX erstellt, beim Booten des Containers, iff-Laufwerk vorhanden war zum Zeitpunkt der docker run
, aber es wird nicht angezeigt, nachdem der run-Befehl, noch wird Sie verschwinden auf der Festplatte entfernt wird.
Hier ist ein Beispiel für die Regel, die funktioniert gut auf dem host-Rechner:
KERNEL=="sd?", SYMLINK+="test_%k"
- Würden Sie bitte posten, welche Art von Gerät, das Sie verarbeiten möchten und was Ihre Regeln Aussehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden. Was ich gesehen habe auf dem internet getan ist die Montage der host -
/dev
im inneren des Behälters:docker run -v=/dev:/dev
(Anmerkung: nicht sicher)Aber das ist sehr gefährlich und ziemlich viel zerstört den host computer ausmisten mit Berechtigungen (z.B. Pseudo-terminals können nicht erzeugt werden).
Jedoch, wenn ich eine udev-Regel auf dem host-Computer, um Geräte in einer einzigartigen Unterverzeichnis, wie
/dev/foo/sdX
, dann kann ich nur teilendev/foo
mit meinem container:docker run -v=/dev/foo:/dev/foo
Nun, wenn ich stecken Sie ein Laufwerk, das passt zu meiner udev-Regel, die den host-Rechner erstellt einen symlink in
/dev/foo/sdX
, die jetzt plötzlich sichtbar für meine container. Wenn das Laufwerk entfernt wird,/dev/foo/sdX
auch verschwindet.Die eine, fehlende feature, dass nett sein würde, ist die Fähigkeit zum auslösen eines script im inneren des Behälters, wenn das Gerät erstellt wird. Eine udev-Regel zu tun, die auf dem host-Rechner, aber kein udev-Regeln zu sein scheinen, stolperte in den container. So ist ein manueller polling ist es, für jetzt.
Es hängt davon ab, welche Art von Gerät, das Sie verarbeiten möchten.
Udev in Containern ist erwähnt in
Besonders der Letzte link gibt Hinweise, wie zum Debuggen der situation.
Können Sie die überwachung von Ereignissen in Verbindung mit udev mithilfe:
Und für den Spaß, den Sie können Ereignisse auslösen, durch den Aufruf:
Die docker-Unterstützung für den udev ist natürlich begrenzt, da docker funktioniert nicht wie eine Virtualisierungs-Umgebung in allen Aspekten.
udevadm monitor
, aber meine Regeln nicht bekommen, ausgelöst auf einen dieser Befehle.