こんにちはBiTTチームのキー坊です。
前回はラズパイにDocker環境を作成してみました。今回はその環境を使ってイメージを作成してみようと思います。
「docker runはしたことあるけど、buildはしたことないなー」って方もいると思います。実際、僕もあんまりbuildしたことないんですけどw
なので、この記事を通してやってみることで以下の情報を皆さんに提供できたらと思います。
- 手順を明らかにする
- ビルドの時間が実用に耐えるのか
特にビルドの時間に関してはは気になる方が多いのではないでしょうか?
僕も数年前に「ラズパイのビルドは遅くて使い物にならない」なんて情報を見かけた覚えがあります。今はラズパイ4とスペックも上がってきてますから、これがどう影響するのかはとても気になりますね。
では、早速やっていきましょう!
どんなイメージを作るか
今回はラズパイ上にUbuntuのベースイメージを持ってきて、Go言語(以下、Go)をインストールします。
※)ラズパイ上のDockerでGoを使いたいときは、こんなことせずに公式から使いたいイメージを落とせば問題ないです。
これはあくまで手順の参考になればとやっています。
準備
前回の記事の内容ができてる前提になるので、環境ができていない方がいましたら、まずそちらを見ていただきたいです。 Raspberry PiにDocker環境構築してみた
その他、準備としてはラズパイ上に以下のようなファイルを作成しましょう。piユーザの所は自分のユーザ名に適宜読み替えてください。
/home/pi/dockergo/
└Dockerfile
Dockerfileには以下のように記載します。
FROM arm32v7/ubuntu:18.04
WORKDIR /tmp
RUN apt-get update && \
apt-get install -y wget
RUN wget https://golang.org/dl/go1.17.1.linux-armv6l.tar.gz
RUN tar -zxvf go1.17.1.linux-armv6l.tar.gz -C /usr/local/
ENV PATH $PATH:/usr/local/go/bin
RUN echo $PATH
RUN go version
CMD /bin/bash
ビルド
ラズパイのターミナルからdockergoフォルダに移動して以下のコマンドを実行します。
$ docker build -t kita/golang:1.0 .
イメージの名前は適当ですのでつけたい名前があれば適宜つけてください。1分30秒くらい待つとビルドが完了します。そしたら、以下のコマンドでbashを起動しましょう。
$ docker run -it kita/golang:1.0 /bin/bash
起動できたら成功です。手順としては以下のような工程になります。
- Dockerfileという「設計図」を作る
- docker buildで組み立てて「起動可能なイメージ」にする
実用性について
上の手順では軽すぎて2分もかからずビルドが終わってしまい参考にならないなぁと感じたので、比較できる材料はないかと探してみました。
こちらのPDFではラズパイのビルドが遅いから、クラウドでビルド時間を短縮できないかという実験をやっているようです。こちらをサンプルにして比較していきたいと思います。PDFでの使用マシンはラズパイ3のようです。
簡単なDockerfileとして以下を使ってビルドに5分かかっていたようです。
FROM multiarch/ubuntu-core:armhf-bionic
RUN apt-get update && apt-get install -y vim
これをラズパイ4の環境で実行してみると1分でビルドが完了しました(30分かかるとしている方は時間がなくて試してません)。
単純にかかる時間を5分の1とするなら30分かかるとしている典型的なアプリケーションのものでも6分で終わりますので、十分に実用的ではないかと思います。
まとめ
いかがでしたでしょうか。
数年前と比べて、ラズパイでのDocker使用はかなり実用的なところまで来ていることがわかったかと思います。僕もRaspberry Piがハードもソフトも進化していて頼れる相棒感が出てきて嬉しい限りです。
では、また次回お会いしましょう!