LoginSignup
0
0

More than 3 years have passed since last update.

(検証不足)AWSの仮想マシンでJETSON nanoのDockerコンテナを快適にBuildしたい(2回目)

Last updated at Posted at 2019-07-21

やりたいこと

  • AWSの仮想マシンでJETSON nanoと同じ環境を作る
  • Dockerを仮想マシンでBuildする
  • 仮想マシンからコンテナをローカルマシンにコピーする
  • Jetson nano 実機でコンテナを動かす

ローカルとクラウドの繋がりはこのように
仮想マシンとJETSON連携.png

より快適な方法

前の記事よりも快適な方法をQiitaで発見しました。
これは自分用のメモです。

こちらが詳しいので、私は補足事項だけ。
64bit ARM チップを積んだ Edge device 用に Docker image をビルドする

仮想マシンを起動

AWSでa1.4xlargeのマシン(課金されます)を選択して起動。
Ubuntu16.04とします。

DockerCEをインストール

こんな感じでstableなDockerCEを入れる

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -sSL https://get.docker.com/ | sh

sudo usermod -aG docker ubuntu

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

sudo docker run hello-world

正常に動くことを確認しました。

以上で準備完了。
Dockerfileを用意する。

Dockerfile
FROM multiarch/ubuntu-core:arm64-xenial

RUN apt-get update && \
    apt-get install -y vim

buildして実行する。

sudo docker build -t arm64-xenial-vim -f Dockerfile .
sudo docker run -it --rm arm64-xenial-vim:latest bash

dockerに入ったら、以下のコマンドで確認

uname -m
file /bin/bash

重量級のBuildを試してみる(本日2回目)

問題なさそうなので、2019/5にビルドで大変苦労した、産総研のOpenVSRAMをDockerでBuildします。
※無課金のマシンを使うと、CPUコアを複数使ったBuild(make -j4)で止まってしまったので、有償のxlargeマシンを使っています
※さらに、QEMUではなく仮想マシンそのものがARMなので、もう少し早いはず

git clone https://github.com/xdspacelab/openvslam
nano Dockerfile.desktop 

同梱のDockerfile.desktopを編集して、仮想マシンを追加します。
追加したのは先頭のみで、ubuntu:18:04は従来通り。

Dockerfile.desktop
FROM multiarch/ubuntu-core:arm64-xenial
FROM ubuntu:18.04
ENV DEBIAN_FRONTEND noninteractive
<続く>

build実行します。
この時、make -j4でのbuildがあちらこちらに記載されていた為、Jetson nanoでは12%くらいまでの進捗で固まってしまい、マシンを落とすこととなりました。
十分な数のコアとメモリを用意します。(仮想マシンはa1.4xlarge)

sudo docker build -t openvslam-desktop -f Dockerfile.desktop . --build-arg NUM_THREADS=4

名前登録したはずなんだけど、sudoつけないとdocker動かないのが謎。

ビルドしてみると30分くらいで終わりました。
(単純に仮想マシンのスペックの差?前回はt2.xlargeを使用)

それでも圧倒的な速さと、全くトラブルを起こさずに実行できていました。
JETSON nanoに移動させて、動くかどうかの確認をしなければ。

Amazonからどんな額の請求書が送られてくるが、震えながら待ちます。

出来上がったファイルをsftpで取り出し

色々考えてあれこれやってたのですが、いつも使っているCyberduckに設定して動かしました。
超簡単でした。

sftpを選択
仮想マシンのsshアクセスのパス
ユーザー名
sshの公開鍵

設定はこれだけで、仮想マシンの中身が見れます。
スクリーンショット 2019-07-21 13.53.13.png

Dockerのコンテナ?イメージ?をファイルにして取り出す

docker save IMAGE_ID > IMAGE_ID.tar
で、イメージを保存。CyberDuckでローカルに保存。

JETSON nanoとローカル接続

いちいちIPを確認しながら繋ぐのが面倒になってきたので、mDNSとかで固定してアクセスしたい。

car /etc/hostname

でhostnameを確認。
これに接続。

ssh name@hostname.local
docker load < IMAGE_ID.tar

Dockerのsudoを打つのが面倒なので、設定を入れてみる

sudo groupadd docker

sudo gpasswd -a $USER docker

sudo systemctl restart docker

exit

再度ログインして実行する。
docker run -it IMAGE_ID
docker attach xxxxx

などして、コンテナを扱う。

できるようになったこと

  • クラウドでDockerイメージをビルドする
  • クラウドからDockerイメージをローカルにダウンロード
  • ローカルPCから基板にイメージを転送
  • 基板にログインしてDockerイメージを展開
  • 基板でDockerコンテナを実行する

まだ、実家の確認が不十分。
open cv のビルドはミスしているようだ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0