S3
docker
Raspberrypi3

Raspberry Piでのオブジェクトストレージminioの構築

minioの構築

ラズパイでAWSのS3互換のオブジェクトストレージであるminioを構築する方法です。

公式リポジトリで、既にラズパイ対応されていますので、単なるメモ書きになります。

1. 公式リポジトリをクローン

minioの公式リポジトリをクローンします。

git clone https://github.com/minio/minio.git

2. ラズパイ用のコンテナイメージをビルド

公式リポジトリにある、Dockerfile.armhfを使用してコンテナイメージをビルドします。

cd minio
docker build -t armhf/minio -f Dockerfile.armhf .

以下のようにDockerイメージがビルドされます。

$ docker images
REPOSITORY                       TAG                             IMAGE ID
     CREATED             SIZE
armhf/minio                      latest                          861b9a9d094c
     6 minutes ago       39.9MB

3. Minio クライアントをビルド

同時にminioクライアントも公式リポジトリからクローンしてビルドしておきます。

git clone https://github.com/minio/mc.git
cd mc
docker build -t armhf/mc -f Dockerfile.release.armhf .

以下のようにDockerイメージがビルドされます。

$ docker images
REPOSITORY                       TAG                             IMAGE ID
     CREATED             SIZE
armhf/mc                         latest                          67541621fb90
     10 minutes ago      24.2MB

このmcを実行すると、以下のように表示されます。ここではヘルプを表示しています。

# docker run -it armhf/mc mc -h
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
NAME:
  mc - Minio Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  ls       List files and folders.
  mb       Make a bucket or a folder.
  cat      Display file and object contents.
  pipe     Redirect STDIN to an object or file or STDOUT.
  share    Generate URL for sharing.
  cp       Copy files and objects.
  mirror   Mirror buckets and folders.
  diff     Show differences between two folders or buckets.
  rm       Remove files and objects.
  events   Manage object notifications.
  watch    Watch for files and objects events.
  policy   Manage anonymous access to objects.
  admin    Manage Minio servers
  session  Manage saved sessions for cp and mirror commands.
  config   Manage mc configuration file.
  update   Check for a new software update.
  version  Print version info.

GLOBAL FLAGS:
  --config-folder value, -C value  Path to configuration folder. (default: "/root/.mc")
  --quiet, -q                      Suppress chatty console output.
  --no-color                       Disable color theme.
  --json                           Enable JSON formatted output.
  --debug                          Enable debug output.
  --insecure                       Disable SSL certificate verification.
  --help, -h                       Show help.

VERSION:
  2017-06-15T03:38:43Z

4. Minioの起動

作成されたDockerイメージを、以下のようにして起動します。

docker run -d --rm --name minio -p 9000:9000 \
  -v $(pwd)/minio:/export \
  armhf/minio server /export

ここではカレントディレクトリにあるminioディレクトリをminio/exportとして実際のオブジェクトストレージとして使用しています。

起動したMinioのログを参照します。

5. Minioの利用

Minioをブラウザから利用することができます。この場合 9000/tcp で起動していますので、以下のようにアクセスします。

$ docker logs minio
Created minio configuration file successfully at /root/.minio
Endpoint:  http://172.17.0.2:9000  http://127.0.0.1:9000
AccessKey: Z4JEKUK5DNLCU9O4OWMY
SecretKey: lcnHjtD9WXmw/Z0dcdZs4owMlLKbEQ+WS2g5qI9S

Browser Access:
   http://172.17.0.2:9000  http://127.0.0.1:9000

Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://172.17.0.2:9000 Z4JEKUK5DNLCU9O4OWMY lcnHjtD9WXmw/Z0dcdZs4owMlLKbEQ+WS2g5qI9S

Object API (Amazon S3 compatible):
   Go:         https://docs.minio.io/docs/golang-client-quickstart-guide
   Java:       https://docs.minio.io/docs/java-client-quickstart-guide
   Python:     https://docs.minio.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.minio.io/docs/dotnet-client-quickstart-guide

Drive Capacity: 4.2 GiB Free, 49 GiB Total

ここで表示されている、AccessKeySecretKeyでMinioを利用することができます。

ブラウザから、以下のようにアクセスして上記のAccessKeySecretKeyでMinioにログインすることができます。

http://localhost:9000/

6. メモ

以上、とりあえずラズパイでMinioを利用するためのメモ書きです。