当在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.如果我稍后在容器运行时连接设备,是否可以将其自动装入容器?
2条答案
按热度按时间ercv8c1e1#
1.如果设备不存在,是否可以忽略错误启动容器?
没有
1.如果我稍后在容器运行时连接设备,是否可以将其自动装入容器?
不可以,这些挂载在启动后无法更改。
可能的解决方案:
我更喜欢在docker-compose之外创建一个网络,这样我们就可以控制它何时可用,何时不可用。
更改合成文件,以便所有其他服务也使用该网络
我将创建一个脚本来查看哪些设备可用,然后动态使用usex 1 m0n1x并为您发现的每个可用设备添加
--device
。如果您希望自动更改设备,您可以考虑使用一个脚本来监视设备是否更改,然后停止正在运行的容器并使用创建的脚本启动一个新的容器。虽然这会导致短暂的停机时间。
6gpjuf902#
docker-compose.yml
中的以下语句为您提供了解决方案。