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

qv7cva1a  于 2023-06-21  发布在  Docker
关注(0)|答案(2)|浏览(146)

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

version: "3.8"

services:
  app:
    build: .
    devices:
      - /dev/video0:/dev/video0

如果在主机系统上没有/dev/video 0启动此容器,则容器将崩溃并出现以下错误:
Error response from daemon: error gathering device information while adding custom device "/dev/video0": no such file or directory
1.如果设备不存在,是否可以忽略错误启动容器?
1.如果我稍后在容器运行时连接设备,是否可以将其自动装入容器?

ercv8c1e

ercv8c1e1#

1.如果设备不存在,是否可以忽略错误启动容器?
没有
1.如果我稍后在容器运行时连接设备,是否可以将其自动装入容器?
不可以,这些挂载在启动后无法更改。

可能的解决方案:

我更喜欢在docker-compose之外创建一个网络,这样我们就可以控制它何时可用,何时不可用。
更改合成文件,以便所有其他服务也使用该网络
我将创建一个脚本来查看哪些设备可用,然后动态使用usex 1 m0n1x并为您发现的每个可用设备添加--device
如果您希望自动更改设备,您可以考虑使用一个脚本来监视设备是否更改,然后停止正在运行的容器并使用创建的脚本启动一个新的容器。虽然这会导致短暂的停机时间。

6gpjuf90

6gpjuf902#

docker-compose.yml中的以下语句为您提供了解决方案。

# instead of "- /dev/video0:/dev/video0" statement
    privileged: true
    devices:
      - /dev:/dev

相关问题