はじめに
Jetson NanoのJetPack 4.2には最初からDocker環境が入っているようなので試してみることにしました。今手元にJetson Nanoしかなかったので触ってみた程度ですが…というか普通にデスクトップ環境と何ら変わらない(笑)
わざわざ記事にするほどのことでもないけど、一応メモということで。
root権限なしでDocker利用可能とする
# ユーザーをDockerグループに追加
$ sudo gpasswd -a $USER docker
# Dockerグループに追加されていることを確認
$ cat /etc/group | grep docker
# 権限の付与
$ sudo chmod 666 /var/run/docker.sock
# 権限の確認
$ ls -l /var/run/docker.sock
srw-rw-rw- 1 root docker 0 6月 15 17:06 /var/run/docker.sock
詳しくはこちらを参考にしてください。
基本動作の確認
こちら「Dockerの基本動作 - Qiita」を参考にDocker基本動作の確認をしていきます。
今回利用するサンプルは、
Go言語のコードで、以下ような挙動をするサーバアプリケーションとして作動します(サンプル:hello_docker - GitHub)。
- 8080ポートにhttpリクエストを送ると"Hello Docker!!"とレスポンスする
dockerイメージのビルド
Desktop環境(Ubutnu18.04)では、10秒くらいでビルド完了しましたが、高性能とはいえマイコン…2分くらいかかりました。
$ git clone https://github.com/fumihachi94/hello_docker.git
$ cd hello_docker
$ docker image build -t sample/echo:latest .
動作確認
ポートフォワーディング設定
ホストマシンのポートをDockerコンテナポートに紐付け、コンテナの外から来た通信をコンテナポートに転送させます。この例では、
- ホストマシンポート :
9000
- コンテナポート :
8080
に設定しています。
docker container run -d -p 9000:8080 sample/echo:latest
コンテナの実行を確認
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49c69a5f1f78 sample/echo:latest "go run /echo/main.go" 49 seconds ago Up 48 seconds 0.0.0.0:9000->8080/tcp infallible_davinci
アプリケーション動作の確認
$ curl http://localhost:9000
Hello Docker!!
以上で、Jetson Nanoでも基本的なサーバーアプリケーションをDockerで動かすことができました!