Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of contents

...

Table of Contents
minLevel1
maxLevel4

はじめに

...

Overview

...

This section explains how to build an environment for developing container apps using iPRO Camera SDK. In this tutorial, the installation directory of SDK is written as ${SDK_DIR}として記載します。.

Info

Container AdamAppはSoCがambaCV5XのカメラファームウェアVer3.30以降が対象で、SDK ver2.10以降で開発可能です。カメラのSoCについてはこちらを確認ください。

開発で推奨する開発環境

サポート対象となる推奨環境は以下となります。

...

AdamApp is for cameras with SoC ambaCV5X and firmware version 3.30 or later, and can be developed with SDK version 2.10 or later. Please check here for camera SoC.

Recommended development environment

...

The recommended supported environments are as follows:

  • OS :Linux (64bit)

  • ディストリビューション Distribution :Ubuntu 22.04 LTS, Ubuntu 20.04 LTS

開発環境構築手順

開発者ライセンスの取得

下記より開発者ライセンスを申請し、取得しておいてください。

...

Development environment construction procedure

...

Obtaining a Developer License

Please apply for and obtain a developer license from the link below.

Inquiry / SDK Download - Development Partner Portal (En) (i-pro.com)

Docker環境の準備

...

Preparing the Docker environment

Install Docker Engine on Ubuntu に従って、Docker Engineをインストールします。以下はページの概略を記載します。

念のため旧パッケージをアンインストールします。
ただし、アンインストールして問題ないパッケージか事前によくご確認ください。削除したことで問題が発生しても責任は負いかねます。

...

your development PC.

Follow the instructions here to install Docker Engine. Below is an outline of the page.

  • Just to be safe, uninstall the old package.
    However, please make sure in advance that it is okay to uninstall the package. We are not responsible for any problems that may occur as a result of deleting it.

    Code Block
    for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

     

  • apt-getで使用するDocker用レポジトリを追加します。echoから始まる行は4行まとめてコピペしてください。Add the Docker repository to be used with apt-get. Copy and paste the four lines starting with echo together.

    Code Block
    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    # Add the repository to Apt sources:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
  • 最新のDocker engineをインストールします。Install the latest Docker engine.

    Code Block
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    When asked "Do you want to continue? [Y/n] と聞かれたら Y を入力してEnterキーを押してください。インストール後の動作確認です。 ", enter Y and press Enter.

  • Check the operation after installation. 

    Code Block
    sudo docker run hello-world

    成功した場合の表示例です。This is an example of what will be displayed if the operation is successful.

    Code Block
    ipro@PC-HP2208N0101R:~$ sudo docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    c1ec31eb5944: Pull complete
    Digest: sha256:d1b0b5888fbb59111dbf2b3ed698489c41046cb9d6d61743e37ef8d9f3dda06f
    Status: Downloaded newer image for hello-world:latest
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/
    

 

Info

プロキシサーバー経由でインターネットに接続される環境では、上記は失敗します。

以下の「プロキシサーバー経由で接続している場合」の手順を実施してください。The above will fail if you are connected to the Internet via a proxy server. Please follow the steps below for "If connecting via a proxy server" section.

 

...

Info

WSL2を使用してWindows PC上に環境を構築している場合、Ubuntu-22.04でDockerが起動できない現象が発生しています。

その場合、WSL2のUbuntu 22.04でDockerが起動しない問題対応 #Ubuntu22.04 - Qiita

上記情報などを参考に、iptables-legacyを使用するようにしてください。

...

dockerコマンドはデフォルトではroot権限が必要なので、ユーザー権限でも実行できるように、dockerグループにユーザーを追加します。 公式ドキュメントでは、 Linux post-installation steps for Docker Engine に記載されています。

If you are using WSL2 to build your environment on a Windows PC, you may experience an issue where Docker cannot be started on Ubuntu-22.04.

In that case, please refer to the information here and use iptables-legacy.

  • The docker command requires root privileges by default, so add the user to the docker group so that it can be executed with user privileges.
    The official documentation states this in Post-installation steps | Docker Docs.

  • Create a docker user group.

    Code Block
    sudo groupadd docker

    If you see the message "groupadd: group 'docker' already exists と表示される場合は、すでにグループが作成されていますので続行します。通常使用するユーザーをdocker groupに追加します。", the group has already been created so continue.

  • Add the user you normally use to the docker group.

    Code Block
    sudo usermod -aG docker $USER

     設定を反映します。

  • The settings will be reflected.

    Code Block
    newgrp docker

     sudo無でdockerが実施できることを確認します。

  • Verify that Docker can be run without sudo.

    Code Block
    docker run hello-world

    成功した場合の表示例です。This is an example of what will be displayed if the operation is successful.

    Code Block
    ipro@PC-HP2208N0101R:~$ docker run hello-world
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/

     

  • systemdの設定を変更して、起動時にDockerサービスが自動起動する設定を行います。

    Change the systemd configuration to automatically start the Docker service at boot time.

    Code Block
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service

     

  • 起動時にdockerサービスが起動するかどうか確認するために一度Ubuntuを再起動します。 WSLではubuntuの端末で再起動はできません。 いったん×ボタンでウィンドウを終了させた後、powershellを起動して以下を入力します。

    Code Block
    wsl --shutdown

     

  • その後スタートメニューから改めてUbuntu 22.04 LTSを起動します。

  • 以下のコマンドを入力し、正しくバージョン番号が表示されれば成功です。

    Code Block
    docker version

    成功したときの表示例です。

    Code Blockipro@PC-HP2208N0101R:~$ docker version Client: Docker Engine - Community Version: 26.1.4 API version: 1.45 Go version: go1.21.11 Git commit:

    Restart Ubuntu once to check if the docker service starts at boot time. In WSL, you cannot restart in the ubuntu terminal. Once you close the window with the x button, start powershell and enter the following.

    Code Block
    wsl --shutdown

     

  • Then start Ubuntu 22.04 LTS again from the start menu.

  • Enter the following command and if the correct version number is displayed, it is successful.

    Code Block
    docker version

    This is an example of what is displayed when the operation is successful.

    Code Block
    ipro@PC-HP2208N0101R:~$ docker version
    Client: Docker Engine - Community
     Version:           26.1.4
    5650f9b API Builtversion:       1.45
     Go version:        go1.21.11
     Git commit:        5650f9b
     Built:             Wed Jun  5 11:28:57 2024
     OS/Arch:           linux/amd64
     Context:           default
    Server: Docker Engine - Community
     Engine:
      Version:          26.1.4
      API version:      1.45 (minimum version 1.24)
      Go version:       go1.21.11
      Git commit:       de5c9cf
      Built:            Wed Jun  5 11:28:57 2024
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.6.33
      GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
     runc:
      Version:          1.1.12
      GitCommit:        v1.1.12-0-g51d5e94
     docker-init:
      Version:          0.19.0
      GitCommit:        de40ad0

プロキシサーバー経由で接続している場合

Dockerをプロキシサーバー経由でインターネットにアクセスさせる手順を実施します。プロキシサーバーを使用していない場合は、実施する必要はありません。

...

If connecting via a proxy server

Follow the steps to allow Docker to access the Internet via a proxy server. If you are not using a proxy server, you do not need to follow these steps.

  • Create a Docker client configuration file and write it as follows:

    Code Block
    vi ~/.docker/config.json

    記載する内容は以下です。 The contents to be written are as follows.

    Code Block
    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://[プロキシサーバーのIPアドレス:ポートProxy server IP address:port]",
         "httpsProxy": "http://[プロキシサーバーのIPアドレス:ポートProxy server IP address:port]"
       }
     }
    }

    特定のIPアドレスだけをプロキシなしで接続したい場合は”noProxy”で設定できます。詳細は プロキシサーバを使うように Docker を設定 — Docker-docs-ja 24.0 ドキュメント をご覧ください。

  • ファイルを保存します。

qemuインストール

コンテナ版追加アプリを作成するために、開発環境にインストールする必要のある、qemuのインストール方法を記載します。

Info

PCを再起動すると、build可能なアーキテクチャにlinux/arm64が表示されなくなる場合があります。その際は、再度同じ手順でqemuをインストールしてください。

 

...

Install qemu

This article describes how to install qemu, which is required in the development environment to create a container version of the additional app.

Info

If you reboot your PC, linux/arm64 may no longer be displayed in the available architectures. In that case, please install qemu again using the same procedure.

 

Installing qemu

Code Block
sudo apt update
sudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts

 

Preparing for docker

...

buildx

  • To use experimental 機能や BuildKit を使うため、環境変数を追加設定 & 反映 します。設定ファイルを開きます。features and BuildKit, set and reflect additional environment variables.

  • Open the configuration file:

    Code Block
    vi ~/.bashrc
  • 以下を末尾に追加Add the following to the end

    Code Block
    export DOCKER_CLI_EXPERIMENTAL=enabled
    export DOCKER_BUILDKIT=1

    保存します。

    buildxが使えるようになっているか確認します。Save the file.

  • Check if buildx is available.

    Code Block
    docker --help | grep buildx

    出力例Example output

    Code Block
      buildx*     Docker Buildx (Docker Inc., v0.10.5)

     現在build可能なアーキテクチャを確認します。

  • Check the architectures that can currently be built.

    Code Block
    docker buildx ls

    出力例Example output

    Code Block
    NAME/NODE DRIVER/ENDPOINT STATUS  BUILDKIT                              PLATFORMS
    default * docker
      default default         running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

    この出力の中に linux/arm64 があれば成功です。

開発環境構築のチェック

環境構築ができたかどうかのチェックを行います。 ※結果は一例ですので、環境によって異なります。

  • Docker Engineがインストール済みであること

    If you see linux/arm64 in the output, you're successful.

Checking the development environment

We will check whether the environment has been built.
*The results are just an example, and may differ depending on your environment.

  • Docker Engine is installed

    Code Block
    $ docker --version
    Docker version 23.0.1, build cb74dfc

    インストール出来ていない場合はDocker Engineをインストールしてください。

    Dockerデーモンが起動中であること
    【systemdを使用している場合】

    If it is not installed, please install Docker Engine.

  • The Docker daemon is running.
    [If you are using systemd]

    Code Block
    $ systemctl status docker
    ● docker.service - Docker Application Container Engine
         Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
         Active: active (running) since Wed 2023-06-28 08:41:48 JST; 5h 6min ago
    TriggeredBy: ● docker.socket
           Docs: https://docs.docker.com
       Main PID: 1051 (dockerd)
          Tasks: 24
         Memory: 199.9M
            CPU: 5.471s
         CGroup: /system.slice/docker.service
                 └─1051 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    
         (以下略)

    Activeが If Active is inactive (dead) になっている場合は、, start the service with the systemctl start docker コマンドでサービスを起動してください。
    docker buildxがインストールされていることcommand.

  • Docker buildx installed

    Code Block
    $ docker --help | grep buildx
      buildx*     Docker Buildx (Docker Inc., v0.10.5)

    何も表示されていない場合は、 If none are listed, follow Docker Buildx に従って個別にインストールしてください。
    qemuがインストールされ、Arm64ビットアプリがクロスビルド可能になっていること
    以下のリストの中に linux/arm64 があることを確認してください。 to install them separately.

  • qemu is installed and Arm64-bit apps can be cross-built. Make sure linux/arm64 is in the list below.

    Code Block
    $ docker buildx ls
    default * docker
      default default         running v0.11.7-0.20230525183624-798ad6b0ce9f linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/arm64, linux/riscv64, linux/ppc64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

    If you don't have linux/arm64 がない場合は、qemuをインストールしてください。

Docker拡張モジュールのインストール

下記よりDocker拡張モジュールをダウンロードし、インストールしてください。Container AdamApp for Azure IoT Edgeのみに対応した古いDocker拡張モジュールがインストールされている場合はアップデートされます。

i-PRO Docker®拡張モジュール | i-PRO Products

下記の赤枠画面よりインストールしてください。緑枠のように表示されれば成功です。

...

Info

バージョンはリリース時期に応じて変わります。

Container AdamApp for Azure IoT Edgeのみに対応した古いDocker拡張モジュールでクラウド対応をONにしている場合はOFFにする必要があります。

以下のURLでカメラ(IPアドレスが192.168.0.10の場合)にアクセスします。

Code Block
http://192.168.0.10/admin/setup_ca_software.html

クラウド対応が「On」になっている場合は「Off」に変更して「設定」を押します。

...

■質問

★docker拡張モジュールは英語サイトはどのように提供するか?

ー>現状以下で、公開している拡張モジュールと同様に問い合わせしてもらいます。書き換え

...

  • , install qemu.

Installing the Docker extension module

To use docker capability, it is necessary to install “Docker extension module” into camera in advance.

Please request Docker extension module from the link.

Inquiry / SDK Download - Development Partner Portal (En) (i-pro.com)

Please install from the screen in the red frame below. If it appears as in the green frame, the installation was successful.

...

Info

The version will change depending on the release date.