Доступ Docker к устройству Ethernet
Пытаясь получить доступ к Ethernet-камере uEye из контейнера Docker, я успешно смог получить к ней доступ с хоста через сеть, но мне не повезло из контейнера.
Я использую docker-compose с привилегированным значением true, как следует
version: '3'
services:
#Engineering UI Service
web:
build:
context: .
dockerfile: Dockerfile
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
expose:
- 8000
networks:
- backend
container_name: web
privileged: true
cap_add:
- SYS_ADMIN
restart: always
tty: true
networks:
backend:
driver: bridge
Dockerfile установлен
FROM centos:7
# set environment varibles
USER root
ENV PYTHONUNBUFFERED 1
RUN yum -y update && yum -y install wget
# INSTALL CAMERA
RUN echo "Installing uEye camera" \
&& mkdir /uEye && cd /uEye \
&& wget http://test.com/uEye-Linux-4.90.06-64.tgz \
&& tar xvf uEye-Linux-4.90.06-64.tgz -C /uEye \
&& sh "ueyesdk-setup-4.90.06-eth-amd64.gz.run"
внутри контейнера при запуске "/usr/local/share/ueye/bin/ueyesetid" я получаю "Нет подключенных камер!"
0 ответов
Единственный способ исправить это - установить cap-add=ALL и -v /dev:/dev. это не рекомендуется, так как это позволяет контейнеру иметь все привилегии хоста, но это единственный способ заставить его общаться с камерой через Ethernet.