Docker 컨테이너에서 lsusb를 사용하여 USB 장치 설명을 얻는 방법은 무엇입니까?

Docker 컨테이너에서 lsusb를 사용하여 USB 장치 설명을 얻는 방법은 무엇입니까?

Docker 컨테이너에서:

docker run --rm -it --privileged debian bash
root@fe612fde137f:/# apt-get update && apt-get install -y usbutils && lsusb
... snip ...
Bus 001 Device 001: ID 1d6b:0002  
Bus 002 Device 012: ID 1a86:5512  
Bus 002 Device 003: ID 0e0f:0002  
Bus 002 Device 002: ID 0e0f:0003  
Bus 002 Device 001: ID 1d6b:0001  
root@fe612fde137f:/# 

호스트 머신에서:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 012: ID 1a86:5512 QinHeng Electronics CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
$

Docker 컨테이너 내부에서 USB 장치 설명을 얻는 방법을 아시나요?


해결책: usb.ids존재하지만 존재하지 않습니다 hwdb.bin(하드웨어 데이터베이스).

docker run --rm -it --privileged debian bash
root@fe612fde137f:/# apt-get update && apt-get install -y usbutils && find / -type f \( -name "usb.ids" -o -name "hwdb.bin" \)
/var/lib/usbutils/usb.ids
root@fe612fde137f:/# 

이는 udev설치되지 않았음을 의미합니다. 수정하려면 apt install udev데비안에서 진행하세요.

답변1

컨테이너 내에 존재합니다 /usr/share/usb.ids(및/또는 [/usr]/lib/udev/hwdb.bin배포판에 컨테이너가 있는 경우).

컨테이너가 제대로 실행되고 있다면 이 파일들만 필요한 것 같습니다 lsusb. udev컨테이너 빌드 프로세스에 포함될 패키지를 추가하는 것이 가능 하지만 이 경우 과잉일 수 있습니다.

파일 은 파일에서 정보를 얻는 hwdb.bin명령에 의해 동적으로 생성됩니다 . systemd-hwdb update컨테이너를 최대한 가볍게 만들려면 컨테이너 외부에 생성하고(또는 컨테이너 빌더 호스트의 파일을 사용하여) 최종 제품을 실제 컨테이너에 주입할 수 있습니다./lib/udev/hwdb.d/*.hwdb/etc/udev/hwdb.d/*.hwdbhwdb.binhwdb.bin

나는 파일을 찾으려고 했던 모든 위치를 찾기 lsusb위해 달려갔습니다.stracehwdb.bin

openat(AT_FDCWD, "/etc/systemd/hwdb/hwdb.bin", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/udev/hwdb.bin", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/systemd/hwdb/hwdb.bin", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/systemd/hwdb/hwdb.bin", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/udev/hwdb.bin", O_RDONLY|O_CLOEXEC) = 3

컨테이너 내에서 hwdb.bin가장 적합한 위치에 파일을 배치할 수 있습니다.

관련 정보