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/*.hwdb
hwdb.bin
hwdb.bin
나는 파일을 찾으려고 했던 모든 위치를 찾기 lsusb
위해 달려갔습니다.strace
hwdb.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
가장 적합한 위치에 파일을 배치할 수 있습니다.