コラム

2024年12月26日

, ,
, , ,

TorizonCore Builderを用いたDockerコンテナ入りのイメージの作成

TorizonCore Builderを用いたDockerコンテナ入りのイメージの作成

本コラムの目標

本コラムはTorizonCore builderにて、DockerコンテナをTorizonOSイメージに反映させることを目標とする。

対象デバイス:Verdin-imx8m Plus、 Evaluation Board

環境構築

下記コラムの「セットアップ」を参照

https://circuit-toradex.com/column/column-966/

※エラー事例

tcb-env-setup.shをsource時、下記のようなエラーが発生する場合がある。

Got permission denied while trying to connect to the Docker daemon socket at …以下省略

その場合、権限問題によるエラーのため、下記コマンドを実行してdocker.sockに権限を付与する。

# sudo chmod 666 /var/run/docker.sock

イメージのカスタマイズ

Step1:イメージやソースの取得

ローカルのTorizonCore Builderのワークスペースにイメージを配置し、下記コマンドを実行する。
※注  torizon-core-docker-verdin-imx8mp-Tezi_6.8.0+build.22.tar は今回のカスタムを行うベースのTorizonOSイメージ。

# torizoncore-builder images unpack torizon-core-docker-verdin-imx8mp-Tezi_6.8.0+build.22.tar

 

Step2:YAMLファイルの作成

YAMLファイルのテンプレートを下記コマンドにて、作成する。
# torizoncore-builder build –create-template

 

Docerイメージを取得する。

Docerイメージの取得方法は2つあり、ビルド毎にイメージを取得する方法とコマンド&ディレクトリ作成を行う方法がある。

今回は後者を採用する。

下記リンクの演習用のymlファイルを任意の場所に配置する。

https://docs.toradex.com/108978-docker-compose-example-armhf.yml

今回使用するdocker-compose-example-armhf.yml

version: “2.4”
services: weston:
image: torizon/weston:2
# Required to get udev events from host udevd via netlink
network_mode: host
volumes:
– type: bind
source: /tmp
target: /tmp
– type: bind
source: /dev
target: /dev
– type: bind
source: /run/udev
target: /run/udev
cap_add:
– CAP_SYS_TTY_CONFIG
# Add device access rights through cgroup…
device_cgroup_rules:
# … for tty0
– ‘c 4:0 rmw’
# … for tty7
– ‘c 4:7 rmw’
# … for /dev/input devices
– ‘c 13:* rmw’
# … for /dev/dri devices
– ‘c 226:* rmw’
command: –developer weston-launch –tty=/dev/tty7 –user=torizon
healthcheck:
test: [“CMD”, “test”, “-S”, “/tmp/.X11-unix/X0”]
interval: 5s
timeout: 4s
retries: 6
start_period: 10skiosk
image: torizon/kiosk-mode-browser:2
security_opt:
– seccomp:unconfined
command: –browser-mode http://www.toradex.com
shm_size: ‘256mb’
device_cgroup_rules:
# … for /dev/dri devices
– ‘c 226:* rmw’
volumes:
– type: bind
source: /tmp
target: /tmp
– type: bind
source: /var/run/dbus
target: /var/run/dbus
– type: bind
source: /dev/dri
target: /dev/dri
depends_on:
weston:
condition: service_healthy

下記コマンドにて事前構築済みのイメージを含むディレクトリをパラメーターとして渡す。

# torizoncore-builder bundle custom/docker-compose-example-armhf.yml –bundle-directory bundle –platform linux/arm/v7

※custom = 配置場所、docker-compose-example-armhf.yml = 演習用ymlファイル

bundleフォルダが存在すれば、構築済みイメージが格納されている。

 

YAMLファイルを下記のように編集する。
今回使用するtcbuild.yaml

input:
easy-installer:
local: images/torizon-core-docker-verdin-imx8mp-Tezi_6.8.0+build.22.tar
output:
easy-installer:
local: torizon-core-docker-verdin-imx8mp-Tezi_6.8.0.CUSTOM
bundle:
dir: bundle/

Step3:YAMLファイルをビルドする

下記コマンドにてビルドを行う。
# torizoncore-builder build

 

Step5:イメージをデバイスにデプロイする

展開方法は下記コラムを参照。

Verdin iMX8にOSイメージをインストールする方法(Verdin iMX8 + Development Board)

デバイス内で下記コマンドを実行し、Dockerイメージが存在するのを確認する。

# docker images

下記のような返答があれば成功。

以上、簡単ではございますが開発の一助となれば幸いです。