Armadillo-IoT G3へDockerをインストール

RaspiへはDockerインストールができる

RaspiberyPiにDockerをインストールすることができます. 似たようなアーキテキチャのArmadillo-IoT G3へもインストールできるだろうと考え,インストーラスクリプトの中を見てみたら, armv7l-debian-jessie とあったのでインストールできるかもしれません.

Armadillo-IoT G3は, Debian GNU/Linux 8 (jessie), armv7l となっています.

Raspberryのサイトの記事DOCKER COMES TO RASPBERRY PIを参考に進めていきます.

Dockerがインストールできるようにkernelをコンパイルして,イメージの作成

通常のイメージではDockerがインストールできません.なので,下記のサポートサイトとドキュメントを参考にカーネルをコンパイルします.

事前準備

atmarkユーザーをsudoersに登録

以前の記事を参考にsudoersに追加します.

apt-utilsをインストール

Dockerインストーラでもインストールしてくれるが,最初にしておく方が良いです.

$ sudo apt-get install apt-utils

Dockerをインストール

以下のコマンドを入力して,インストールをしていきます.

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

しばらく待ちます.

Client:
 Version:      17.11.0-ce
 API version:  1.34
 Go version:   go1.8.3
 Git commit:   1caf76c
 Built:        Mon Nov 20 18:52:15 2017
 OS/Arch:      linux/arm

Server:
 Version:      17.11.0-ce
 API version:  1.34 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   1caf76c
 Built:        Mon Nov 20 18:44:49 2017
 OS/Arch:      linux/arm
 Experimental: false
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker atmark

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

インストールできました!

Hello Worldで動作確認

docker run armhf/hello-world コマンドで動作確認をします.

$ sudo docker run armhf/hello-world
Unable to find image 'armhf/hello-world:latest' locally
latest: Pulling from armhf/hello-world
a0691bf12e4e: Pull complete 
Digest: sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426
Status: Downloaded newer image for armhf/hello-world:latest

Hello from Docker on armhf!
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.
 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 Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

無事に動作しているようです.

コンテナの確認

docker ps -a コマンドで確認します.

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b63820b9a16a        armhf/hello-world   "/hello"            6 minutes ago       Exited (0) 6 minutes ago                       pensive_shaw

コンテナの削除

docker rm {CONTAINER_ID or NAME} コマンドでコンテナを削除します.

$ sudo docker rm pensive_shaw
pensive_shaw

イメージを確認

docker images コマンドで確認

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
armhf/hello-world   latest              d40384c3f861        14 months ago       1.64kB

イメージを削除

docker rmi {IMAGE_ID} コマンドで削除します.

$ sudo docker rmi d40384c3f861
Untagged: armhf/hello-world:latest
Untagged: armhf/hello-world@sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426
Deleted: sha256:d40384c3f8619d0976e52dd6aa13e6037e16698205a95e87d5d468dc12753630
Deleted: sha256:defe452159cc43499944129ea74482a1fdfbd67d1deac48061babcc93a740d6d

おわりに

Armadillo-IoT G3 は,標準提供のイメージではDockerをインストールすることができません.しかし,カスタムイメージを作成することでインストール可能となります.

これで, Azure IoT Edge v2のインストール実験に近づきました.