Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

docker-openrtm

OpenRTM-aistのUbuntu用最新バージョンがインストールされているDockerイメージを作成するためのDockerfileを定義

How to build

ビルドと同時にDocker Hubへアップロードするため、事前にブラウザDocker hub とコンソール画面からログインしておく

  • コンソール画面の場合
$ docker login -u ユーザ名

OpenRTM 2.1.0版用(Ubuntu24.04、22.04)で、ビルドと同時にDocker hubへアップロードする手順は以下の通り

C++, Python, Java

Ubuntu24.04用の手順

$ git clone https://github.com/OpenRTM/docker-openrtm
$ cd docker-openrtm

# c++用
$ docker buildx build --no-cache --pull -f ubuntu_2404/cxx/Dockerfile -t openrtm/cxx:u24.04-2.1.0 --platform linux/amd64,linux/arm64 --push .

# python用
$ docker buildx build --no-cache --pull -f ubuntu_2404/python/Dockerfile -t openrtm/cxx:u24.04-2.1.0 --platform linux/amd64,linux/arm64 --push .

# java用
$ docker buildx build --no-cache --pull -f ubuntu_2404/java/Dockerfile -t openrtm/cxx:u24.04-2.1.0 --platform linux/amd64,linux/arm64 --push .

rtshell

rtshell用のビルド時、Python3で以下に示す既知の相性バグが発生した

  • QEMUエミュレーション環境下において特定の命令で高確率でセグメンテーションファルト(-11)を起こしてクラッシュする

これの回避のため、--network=host を指定してビルドする

Ubuntu24.04用の手順

$ docker buildx build --network=host --no-cache --pull -f ubuntu_2404/rtshell/Dockerfile -t openrtm/rtshell:u24.04-4.2.10 --platform linux/amd64,linux/arm64 --push .

imageprocessing

DockerfileではOpenCVをソースからインストールし、ImageProceesingをビルドしてdebパッケージを生成し、これを使ってインストールする処理を定義している

Macのarm64環境でamd64用ビルドを行うと、セグメンテーションファルトを起こすため、arm64とamd64はそれぞれのネイティブ環境で別々にビルドする

Ubuntu24.04用の手順

# arm64用はタグ名に -arm64 を付けてビルドする
$ docker buildx build --no-cache --pull -f ubuntu_2404/imageprocessing/Dockerfile -t openrtm/imageprocessing:u24.04-2.1.0-arm64 --platform linux/arm64 --push .

# amd64用はタグ名に -amd64 を付けてビルドする
$ docker buildx build --no-cache --pull -f ubuntu_2404/imageprocessing/Dockerfile -t openrtm/imageprocessing:u24.04-2.1.0-amd64 --platform linux/amd64 --push .

Docker Hub上にすでに -amd64 と -arm64 のイメージが存在している状態で、これを一つにまとめる

Ubuntu24.04用の手順

# 1. 適当な空ディレクトリを作成して移動
mkdir build-tmp && cd build-tmp

# 2. Dockerfileの代わりに「Docker Hub上の2つのイメージをただ吸い込んで1つにまとめる」コマンドを実行
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t openrtm/imageprocessing:u24.04-2.1.0 \
  --push - <<EOF
FROM openrtm/imageprocessing:u24.04-2.1.0-\$TARGETARCH
EOF

# 3. 終わったら空ディレクトリを削除
cd .. && rm -rf build-tmp
  • $TARGETARCH という変数を使うことで、Docker側が自動的に「amd64のときは -amd64 を、arm64のときは -arm64 をDocker Hubから引っ張ってきて、 1つのマルチアーキテクチャタグ(u24.04-2.1.0)にまとめて直にPushする」という処理をノービルド(一瞬)で行ってくれる

Docker Hubで1つのイメージにまとまっていることを確認できたら、ブラウザで個別タグを削除しておく

# 1. 対象のリポジトリ(openrtm/imageprocessing)を開く
# 2. 「Tags」 タブをクリック
# 3. タグの一覧から、削除したい個別タグ(例:u24.04-2.1.0-amd64、u24.04-2.1.0-arm64)を探す
# 4. 右側にある ゴミ箱アイコン(Delete)をクリック

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages