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
Debian で進めてください。
答え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
最適な場所にファイルを配置できます。