Docker でカメラに接続する
このページでは、Docker でカスタム IP アドレスを使用して 1 つまたは複数のカメラに接続する方法について説明します。
注釈
続行する前に、ホスト マシン上で ネットワーク設定 の設定を済ませておいてください。
注釈
These instructions are independent of the compute backend. See Docker に Zivid をインストールする for the OpenCL and CUDA backend options and which one to use for your host.
Docker uses the bridge network driver by default, which does not allow multicast traffic.
This means multicast DNS (mDNS) network discovery is unavailable, and only cameras with default IP 172.28.60.5 can be discovered without further configuration.
There are three ways to work around this.
If you know the IP address or hostname of the camera, you can connect to it directly without relying on mDNS discovery.
Pass a CameraAddress to connectCamera, as described in キャプチャチュートリアル.
This is the simplest option when you are connecting to a specific camera at a known address.
簡単な解決策は、ホスト ネットワークを Docker コンテナに公開することです。これは、Docker コンテナの実行時に --network=host を有効にすることで実現できます。例えば次のようにします。
sudo docker run --interactive --tty --device=/dev/dri --network=host <image>
ここで <image> は、コンテナの起動元となる Docker イメージです。これにより、すべてのホスト ネットワーク インターフェイスがコンテナに公開されることに注意してください。
注釈
This works on native Linux, where the host network reaches the camera directly.
On Windows, Docker Desktop runs containers in the WSL virtual machine.
There, --network=host exposes that virtual machine's network, not the Windows host network, so mDNS discovery does not find the camera.
The camera is still reachable by IP address, so on Windows connect by IP address or hostname instead.
Zivid SDK は、mDNS を使用する代わりに、ファイル Cameras.yml を使用して特定の IP アドレスを検索できます。この仕組みの詳細については Cameras.yml と検出可能なカメラを制限する方法 を参照してください。デフォルト以外の 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