Raspberry Pi互換ボードでDocker

# はじめに

Raspberry Pi互換ボードのTinker boardを利用してDockerを利用するための導入。

おうちサーバが4年目をそろそろ超えるので、新しく軽量なサーバを構築しようと考えた。
そこで、今のおうちサーバで主にやっていることを洗い出したところ、ファイルサーバとVPNサーバ、そしてHyper-VによるLinuxのテスト用仮想環境の提供だった。

メインのPCも今年の前半に強化してHyper-Vを常時起動しても問題無いくらいの余裕が生まれた。
残ったファイルサーバとVPNサーバの提供であれば、Raspberry Piでもいけると踏んで見つけたのが、今回の互換ボードであるTickerboardである。

TickerboardはRaspberry Piと比較して多くの面で強化されている。[参考:impress記事](https://pc.watch.impress.co.jp/docs/news/1073926.html)
特に気になったのがGigabit Ethernet。
おうち向けのDNSや証明書の管理サーバを立てる予定だった事もあり、ネットワークだけは早いほうが良いと判断。
この部分をDockerで行う。

# OSイメージの検討

[ASUS公式](https://www.asus.com/jp/Single-Board-Computer/Tinker-Board/)で提供されているOSはAndroidとDebian。
Debianを試しに起動し、[Docker公式のドキュメント](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)にしたがってインストールを実施していたところ、*INSTALL DOCKER CE*の項目で正しくパッケージのURLが取得できないようだった。
Debianを利用していることが原因のようだった。
そこで、UbuntuベースのTinker board用のOSを検討した結果[armbian](https://www.armbian.com/tinkerboard/)を利用する事とした。

# OSの起動と初期設定
HDMIとマウス、キーボードLANケーブル、電源ケーブルを挿して、armbianをmicro SDに書き込み起動するとrootのパスワードと、ユーザの追加が求められる。
画面の指示に従い適当に設定する。

日本語の対応を行いたい場合は、画面が立ち上がってから、Applications -> Setting -> Armbian configをクリック。
Rootのパスワードを入力し、表示された画面のPoersonalから各種設定を行う。
さらに、ディスクトップに戻ってから、GUI側でもApplications -> 
 Setting -> Language SupportからInstall / Remove Languages... で日本語を追加し、Language for menus and windows:配下のリストから日本語を最上段にDrag and Dropする。
たぶん前半の設定だけでターミナルの文字も日本語で正しく表示されると思うが、一応後半も設定した。

# Dockerのインストール
[Docker公式のドキュメント](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)にしたがってインストールを行う。
注意するところは、*SET UP THE REPOSITORY*の4項でarmhfのタブを選択してそれを利用することである。
それ以降は手順に従い、インストールすれば正しく導入される。

# Docker Composeのインストール

[公式のドキュメント](https://docs.docker.com/compose/install/#install-compose)を参考にLinuxタブの内容ではインストールできなかった。
Arm用のdocker-composeが準備されていないのである。
そこで、Alternative install Optionsからインストールを実施。

```bash
# pip install docker-compose
Collecting docker-compose
  Using cached docker_compose-1.18.0-py2.py3-none-any.whl
Collecting texttable<0.10,>=0.9.0 (from docker-compose)
  Using cached texttable-0.9.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    ImportError: No module named setuptools

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-0A9TJa/texttable/
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
```

## pipのアップデート
バージョンが低いからあげろと言われたので、指示に従う。

```bash
# pip install --upgrade pip
```

## 再実施

```bash
# pip install docker-compose
Collecting docker-compose
  Using cached docker_compose-1.18.0-py2.py3-none-any.whl
Collecting texttable<0.10,>=0.9.0 (from docker-compose)
  Using cached texttable-0.9.1.tar.gz
Could not import setuptools which is required to install from a source distribution.
Please install setuptools.
```

## setuptools不足
setuptoolsが入っていないとのこと

```
# pip install setuptools
```

## 三度目の正直

```bash
# pip install docker-compose
```

## インストールの確認

```bash
# docker-compose --version
docker-compose version 1.18.0, build 8dd22a9
```

# 参考画像
* ログイン直後
![tinkerboard.PNG](https://qiita-image-store.s3.amazonaws.com/0/64655/a52abe4d-5337-2e82-ca54-c761f8e3b95a.png)

* docker起動
![tinkerboard_docker.PNG](https://qiita-image-store.s3.amazonaws.com/0/64655/60e4c444-d537-d78a-c948-fe0baf5013ef.png)