Connecting to camera(s) in Docker

이 페이지에서는 Docker에서 사용자 정의 IP 주소를 사용하여 하나 이상의 카메라에 연결하는 방법을 설명합니다.

참고

계속하기 전에 호스트 컴퓨터에서 Network Configuration 구성했는지 확인하세요.

Docker는 기본적으로 bridge 네트워크 드라이버를 사용하는데, 이 드라이버는 멀티캐스트 트래픽을 허용하지 않습니다. 즉, 멀티캐스트 DNS(mDNS) 네트워크 검색을 사용할 수 없으며, 추가 구성 없이 기본 IP 주소 172.28.60.5 인 카메라만 검색할 수 있습니다. 이 문제를 해결하는 방법은 두 가지가 있습니다.

간단한 해결책은 호스트 네트워크를 Docker 컨테이너에 노출하는 것입니다. Docker 컨테이너를 실행할 때 다음과 같이 --network=host 을 활성화하면 됩니다.

sudo docker run --interactive --tty --device=/dev/dri --network=host <image>

여기서 <image> 는 컨테이너를 시작하는 Docker 이미지입니다. 이렇게 하면 모든 호스트 네트워크 인터페이스가 컨테이너에 노출됩니다.

Zivid SDK는 Cameras.yml 파일을 사용하여 mDNS 대신 특정 IP 주소를 검색할 수 있습니다. 작동 방식에 대한 자세한 내용은 Cameras.yml and how to restrict discoverable cameras 참조하세요. 기본 IP가 아닌 카메라를 검색하려면 Dockerfile에 다음을 추가하세요.

ENV ZIVID_CONFIG=/root/.config/Zivid/API/Cameras.yml
RUN mkdir --p $(dirname $ZIVID_CONFIG)
RUN echo "__version__: 1"                   >> $ZIVID_CONFIG
RUN echo "Cameras:"                         >> $ZIVID_CONFIG
RUN echo "    NetworkCameras:"              >> $ZIVID_CONFIG
RUN echo "        - NetworkCamera:"         >> $ZIVID_CONFIG
RUN echo "            Host: 172.28.60.5"    >> $ZIVID_CONFIG
RUN echo "        - NetworkCamera:"         >> $ZIVID_CONFIG
RUN echo "            Host: 172.28.60.6"    >> $ZIVID_CONFIG
RUN echo "        - NetworkCamera:"         >> $ZIVID_CONFIG
RUN echo "            Host: 172.28.60.7"    >> $ZIVID_CONFIG

Host 필드를 변경하여 특정 IP 주소로 카메라를 검색하거나, 다른 NetworkCamera 를 추가하세요. 변경 사항을 적용하려면 Docker 이미지를 다시 빌드하세요.

다음을 실행하여 Docker 컨테이너에서 연결된 모든 카메라를 검색할 수 있는지 확인합니다.

ZividListCameras