Docker mit Host Windows COM-Port passthrough?

CrazyWurscht

Enthusiast
Thread Starter
Mitglied seit
09.09.2011
Beiträge
724
Ort
Oberbayern
Kann man mit Docker und Windows als Host-OS serielle COM-Ports an den Docker-Container (in meinem Fall Ubuntu) weiterreichen?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich habe eine ähnliche Frage.
Und zwar habe ich einen Rhasspy Container mit folgendem Befehl laufen. Allerdings auf einem Pi4.

Code:
$ docker run -d -p 12101:12101 \
      --name rhasspy \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile de

Ich würde jetzt gerne ein USB Gerät an den Container durchreichen, finde aber nicht heraus wie.
Ich habe es schon mit —device /dev/ttyACM0 und --device /dev/ttyUSB0 versucht, aber ohne Erfolg.

Dann habe ich im Netz das hier gefunden, nur leider nutze ich nicht ubuntu. Hat irgend jemand vorschläge?
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

Da fällt mir grade auf, RaspberryPiOS setzt glaube ich auf debian auf. evtl teste ich das nachher mal.
 
Die Befehle in CMD für Docker sind eigentlich überall gleich.
 
@Ceiber3
erstmal danke für die Antwort.
Dass die Befehle als solches gleich sind, davon bin ich auch ausgegangen. Wie ich ein USB device verfügbar mache, weis ich aber trotzdem nicht.
Bezüglich des Befehls aus dem Netz war ich unsicher, wegen ubuntu im CMD

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

Bin noch unterwegs, ich teste später nochmal weiter
 
Nea das Ubuntu heist einfach nur das er einen Docker Conatiner mit Ubuntu laden und erstellen und ausführen soll.
Du kannst das Ubuntu auch austauschen gegen einen anderen Dockercontainer. Das Ubuntu ist nur das Image.
Jedenfalls sollte es so sein, bin aber auch keine Docker Experte. :)
 
Du kannst das Ubuntu auch austauschen gegen einen anderen Dockercontainer. Das Ubuntu ist nur das Image.
sehr gut danke, das konnte ich aus meiner quelle nicht sehen. werde das später testen!! danke
 
@Ceiber3
klappt leider nicht. Der Container läuft, ist aber angeblich nicht auffindbar, oder ich habe kein zugriff. Auch ein sudo davor hat nichts geändert.
Code:
 $ sudo docker run -t -i --device=/dev/ttyUSB0 rhasspy bash
Unable to find image 'rhasspy:latest' locally
docker: Error response from daemon: pull access denied for rhasspy, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
mit folgenden Befehl komme ich zwar zum Login, mit meinen Sudo Zugangsdaten komme ich aber nicht rein.
Code:
$ sudo docker login 192.168.178.40:8080
Username: pi
Password:
Error response from daemon: Get https://192.168.178.40:8080/v2/: dial tcp 192.168.178.40:8080: connect: connection refused
 
Soweit ich das sehe, liegt der Fehler daran das er rhasspy:latest nicht laden kann weil du nicht in Docker Hub wo das Image liegt eingelogt bist.

Du musst also einlogen beim Docker Hub:

Sprich:
sudo docker login

Danach fragt er nach Username, Passwort, E-Mail.

Wenn du erfolgreich eingelogt bist, sollte dein Befehl oben gehen und er das Image runterladen können.

Du kannst Docker images nur eingelogt runterladen, sonst sagt Docker genau den Fehler mit access denied.
 
Zuletzt bearbeitet:
Die Seite auf der das Image liegt?? Die IP ist der localhost, also der Pi selber.
mit sudo docker login und sudo logins kommt folgendes
Code:
$ sudo docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: pi
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password

edit: diesmal habe ich nicht zuende gelesen..... ich brauche also ein docker ID

edit2:
Also der Befehl sudo docker login ist nur der Login auf der Docker Plattform. Nachdem ich da ein Konto angelegt habe, konnte ich diesen Login auch ausführen.
Die rechte auf meinem Pi habe ich trotzdem nicht. Ich kann mich mit den erstellen Logindaten genauso wenig einloggen, auch das direkte Ausführen des Befehls ist weiterhin nicht möglich.
 
Zuletzt bearbeitet:
Ist ja auch logisch, weil das eine mit dem anderen nichts zu tun hat.

sudo docker run -t -i --device=/dev/ttyUSB0 rhasspy bash mach ja, das er dir das Docker Image vom Docker Hub lädt und diesen mit den Optionen davor erstellt.
Mehr macht ja der Befehl nicht. Vorher schaut er aber ob es das Docker Image schon local gibt, das war bei dir nicht der Fall.

Unable to find image 'rhasspy:latest' locally = Er konnte das Image Local nicht finden.
Also machte er als zweites das:
docker: Error response from daemon: pull access denied for rhasspy, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Sprich er wollte es direkt vom Docker Hub laden, da du aber nicht eingelogt warst, hatte er dafür keine Rechte.

Du schreibst ja selber das er jetzt den Docker erstellt.
Ich weiß nur nicht genau was der Docker Conatiner macht den du da erstellen magst und über was für ein PI Login du schreibst. :-)

Edit:

auch das direkte Ausführen des Befehls ist weiterhin nicht möglich.

Ach, kommt da noch immer der selbe Fehler ? Normal sollte er ja jetzt laden können.
 
Mehr macht ja der Befehl nicht. Vorher schaut er aber ob es das Docker Image schon local gibt, das war bei dir nicht der Fall.

Unable to find image 'rhasspy:latest' locally = Er konnte das Image Local nicht finden.
das stimmt ja schon nicht. ich finde das alles etwas komisch, ich fange mal vom Anfang an.

aktuell ist ein frisches PiOS installiert.
Das habe ich bis jetzt gemacht:

Code:
$ curl -sSL https://get.docker.com | sh
$ sudo usermod -a -G docker $USER
$ docker run -d -p 12101:12101 \
      --name rhasspy \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile de

Der Container läuft! Ich kann Rhasspy über den Browser erreichen. Als nächstes soll ein USB device durchgereicht werden.
Jetzt sagt der PI aber das:
Code:
pi@raspberrypi:~ $ ls
Bookshelf
und das, wenn ich das eingebe: docker run -t -i --device=/dev/ttyUSB0 rhasspy bash
Code:
Unable to find image 'rhasspy:latest' locally

Ich kann mit ls auch gar keine directorys finden. Rhasspy läuft aber wie gesagt.

sudo docker run -t -i --device=/dev/ttyUSB0 rhasspy bash mach ja, das er dir das Docker Image vom Docker Hub lädt und diesen mit den Optionen davor erstellt.
Wenn das so ist, habe ich den Befehl falsch verstanden. Ich bin davon ausgegangen, dass ich Rhasspy damit den Pfad durchreiche.
Du sagst ja selber das er jetzt den Docker erstellt.
Der Container lief von Anfang an und der USB0 Befehl funktioniert nicht.
docker: Error response from daemon: pull access denied for rhasspy, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Sprich er wollte es direkt vom Docker Hub laden, da du aber nicht eingelogt warst, hatte er dafür keine Rechte.
Mag sein, ich musste mich bis jetzt noch nie auf Docker Hub anmelden und hatte schon einige Container geladen.
 
Normal hast du ja wie du schreibst mit dem Befehl

$ docker run -d -p 12101:12101 \
--name rhasspy \
--restart unless-stopped \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
--device /dev/snd:/dev/snd \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile de

schon den Docker erstellt und kannst zugreifen.

Das macht den Befehl: sudo docker run -t -i --device=/dev/ttyUSB0 rhasspy bash überflüssig. Warscheinlich wirft er dir deswegen auch nen Fehler, da der Container ja schon läuft.

Du kannst ihn ja nochmal neu erstellen mit dem Befehl und nur den Device Befehl mit reinnehmen.

docker run -d -p 12101:12101 \
--name rhasspy \
--restart unless-stopped \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile de

Kannst auch mal so probieren:

docker run -d -p 12101:12101 \
--name rhasspy \
--restart unless-stopped \
-v "$HOME/.config/rhasspy/profiles:/profiles" \
-v "/etc/localtime:/etc/localtime:ro" \
--device /dev/snd:/dev/snd \
--device /dev/ttyUSB0:/dev/ttyUSB0 \
rhasspy/rhasspy \
--user-profiles /profiles \
--profile de

Weiß nur nicht, ob das so richtig geschrieben ist. Wie geschrieben bin auch kein Docker Experte, nutze aber eigentlich sehr sehr gerne Docker.
 
also der Fehler liegt nicht daran, dass bereits ein Container mit dem Namen läuft. Das sieht dann nämlich so aus
Code:
docker: Error response from daemon: Conflict. The container name "/rhasspy" is already in use by container "e009340e9c9ae9f2021eba01246f2eda184849dc107d62d932444ce26538ab8c". You have to remove (or rename) that container to be able to reuse that name.

Ich habe auch mal versucht beide Befehle von oben zusammen zu bringen.
Code:
docker run -d -t -i -p 12101:12101 \
      --name rhasspy \
      --restart unless-stopped \
      -v "$HOME/.config/rhasspy/profiles:/profiles" \
      -v "/etc/localtime:/etc/localtime:ro" \
      --device /dev/snd:/dev/snd \
      --device /dev/ttyUSB0:/dev/ttyUSB0 \
      rhasspy/rhasspy \
      --user-profiles /profiles \
      --profile de

Die Antwort:
Code:
docker: Error response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0": no such file or directory.
/dev/ttyACM0 funzt auch nicht. :( Ich bin weiter an der Sache drann
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh