본문 바로가기

IT/리눅스

docker 컨테이너에서 host web cam 디바이스 사용하기(host video access, video device)

반응형

audio device와 마찬가지로 docker host에 연결된 HW를 직접 access 하기 위해서는 device 사용 권한을 docker container로 함께 넘겨 줘야 합니다. 

 

여기서는 비디오 디바이스의 사용 가능 여부를 확인하기 위해서 V4L2를 사용하도록 하겠습니다.

Video4Linux2 (V4L2)는 리눅스 커널에서 비디오 캡처 및 비디오 출력 장치와 상호 작용하기 위한 API 및 드라이버 프레임워크입니다. 
V4L2는 비디오 카메라, 웹캠, TV 튜너, 디지털 비디오 카드 등 다양한 비디오 관련 하드웨어 장치를 제어하는데 사용됩니다.

 

v4l 관련 패키지 설치 

apt-get install v4l-utils

 

1. host에 연결된 usb cam 디바이스 확인 

먼저 호스트에서 제대로 인식 되고 있는지 확인해 봅니다. 

 

> v4l2-ctl --list-devices

 

하지만 docker container에서 확인을 해보면 다음과 같이 디바이스가 보이지 않습니다 .

 

이런 경우 docker container를 생성할때 device 정보를 같이 넘겨주면 동일하게 access가 가능합니다. 

 

2. --device option을 이용하여 컨테이너 생성하기 

아래와 같은 방법으로 host의 video deivce 정보를 함께 넘겨 줍니다. 

 

docker run --runtime=nvidia --shm-size=1024m -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --net=host --env="DISPLAY" --device=/dev/snd:/dev/snd --device=/dev/video0:/dev/video0 --device=/dev/video1:/dev/video1 --device=/dev/media0:/dev/media0 -i -t -v /etc/localtime:/etc/localtime:ro -v /home/docker/share:/root/share --name=ubuntu2004_media  ubuntu2004_img:new  /bin/bash

 

위와 같은 옵션으로 컨테이너를 생성한 후에 동일한 방법으로 확인해봅니다. 

 

> v4l2-ctl --list-devices

 

host와 동일하게 video device가 보이는게 확인될 것입니다.

 

이제 cam 영상 수신과 캡쳐 등을 도커 내에서도 사용하실 수 있습니다. 

 

반응형