本当はもっとやりたいことがある|デジハリ
本当はもっとやりたいことがある|デジハリ

Raspberry PiにDocker環境構築してみた

キー坊

こんにちは、BiTTのキー坊です。

「こんなツールを使いたい!」とプライベートでふと思っても、世の中にはまだ要件を満たすツールが存在していないことってありませんか?(僕のニーズがちょっとおかしいなどのツッコミはそっと胸にしまってくださいね!)

最近は、そんな悩みが発生したら自分でアプリを作るようにしています。

個人的な話で申し訳ないですが、僕のマシン環境は以下の3台で運用しています。

Windows
Web徘徊、音楽、動画やゲームのエンタメ系の用途が主で開発に必要な環境はほぼ皆無(かろうじてDockerとgitが入っているくらい)。
Mac
開発用。ラズパイをいじるときの母艦的扱い。
ラズパイ
メインの開発用マシン。

そして今回作成しているツールは主にWindowsでの使用を想定しています。そのため、最終テストや調整をWindowsでやらざるを得ないです。しかし、個人的にWindowsの環境に開発系のものをこれ以上インストールすることは嫌なので、Dockerを使ってこれらを上手く対処することにしました。

ということで、ラズパイにDocker環境を作っていきたいと思います。これならWindows用のdockerfileを用意するだけで良さそうです。久しぶりにラズパイDocker熱が復活してうずうずしているので、早速やっていきましょう!!

準備

ラズパイのOSインストールなどは以前、記事にまとめているのでそちらを参照してください。


それから、最低限のセキュリティ対策もしておくとより良いです。

Dockerのインストール

ラズパイのターミナルを開き、以下のコマンドでインストールできます。使うのはターミナルだけなので、sshとVNCのどちらでログインしても問題ないです。

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

ラズパイへのDockerインストールは6、7年前にもチャレンジしたことがあったのですが、当時は有志の方が作成したイメージを使用する必要があったと思います。ARMのイメージも少なく自分でビルドする必要があったことも、当時諦めた要因の一つでした。最近は簡単になっており、感動です。

あとは自分のユーザーをDockerグループに追加します。

$ sudo usermod -aG docker {ユーザー名}

ついでに自動起動もしておきます。

$ sudo systemctl enable docker

ここで、一度ログアウトして再度同じユーザーで入り直しておきましょう。これで、インストールは完了です。

動作確認

同じくターミナルを開いて、以下のコマンドを実行します。 

$ docker -v
Docker version 20.10.7, build f0df350

おー、ちゃんと動いていますね!

昔を知っているものとしては拍子抜けですが、楽にできるのは良いことです! 環境構築に手間取ると、その先のアプリを作る作業に注力できずにやる気がもげちゃいますからね(笑)。

Hello, World!

折角なので、古代よりエンジニアに継承されてきた伝統的な様式に則り、世界に入門してきたことをマシンに刻みつける「Hello, World!」をしていこうと思います。

なんかすごいことやっているふうに聞こえます? 実は下のコマンド一発なんですけど(笑)。

$ docker run hello-world

すると、ターミナルに以下のような情報が表示されると思います。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2c7ed585684a: Pull complete 
Digest: sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm32v7)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

これは、実際にhello-worldのイメージが存在していて、それを取得して動作させた結果出てきたものです。つまり、無事入門できました!

まとめ

いかがでしたでしょうか?

MacやWindowsにDocker環境を作ったことがある人はある程度いると思いますが、ラズパイでそれをやったことがある人は少ないんじゃないでしょうか? そして、僕のように当時諦めた人もいると思うので、一度チャレンジしてみると良いかもですね!

数年前は難しくて諦めてたことでも、今なら簡単にできるようになってることって他にもありそうだなーと思い、記憶を探っています(笑)。

M o n g o