docker-compose:如果未找到设备,则忽略设备映射

zje*_*fer 15 docker docker-compose

在 docker-compose.yml 中定义这样的设备映射时:

version: "3.8"

services:
  app:
    build: .
    devices:
      - /dev/video0:/dev/video0
Run Code Online (Sandbox Code Playgroud)

如果在主机系统上没有 /dev/video0 的情况下启动此容器,容器将崩溃并出现以下错误:

Error response from daemon: error gathering device information while adding custom device "/dev/video0": no such file or directory

  1. 如果设备不存在,是否可以启动容器,忽略错误?
  2. 如果我稍后在容器运行时连接设备,是否也可以将其自动安装到容器中?

Den*_*oef 0

  1. 如果设备不存在,是否可以启动容器,忽略错误?

  1. 如果我稍后在容器运行时连接设备,是否也可以将其自动安装到容器中?

不可以,这些安装在启动后无法更改。

可能的解决方案:

我更愿意在 docker-compose 之外创建一个网络,以便我们可以控制它何时可用、何时不可用。

更改撰写文件,以便所有其他服务也使用该网络

我将创建一个脚本来查找哪些设备可用,然后动态使用docker run --network YOUR_NETWORK并添加--device您发现的每个可用设备。

如果您想自动更改设备,您可以考虑一个脚本来监视设备是否发生更改,然后停止正在运行的容器并使用创建的脚本启动一个新容器。尽管这会导致短暂的停机时间。