💾

Synology NAS上でMinIOをDockerコンテナとして動かす

2022/05/07に公開

3行まとめ

  • Synology NASではDockerコンテナを起動できる。
  • MinIOを使えばローカル環境にオブジェクトストレージを手軽に構築できる。
  • Synology NAS上でMinIOを起動することで、RAID構成のオブジェクトストレージ環境を手軽に構築できる。

はじめに

Synology製のNAS(Network Attached Storage)は、比較的自由度が高く、普通のLinuxマシンのようにいろいろなことができます。
今回は、そんなSynology NASでMinIOを動かしてみました。

MinIOとは?

オープンソースのオブジェクトストレージです。端的に言えば「ローカルで動作するAmazon S3みたいなもの」です。

MinIOに関しては豊富に情報がありますので、詳細は割愛します。なお、公式の動画では「ミンアイオー」と発音されているようです。(個人的には「ミニオ」と呼んでいました)

https://min.io/

環境とDockerパッケージのインストール

今回使用したSynology NASは「DS720+」という機種です。
スペックやDocker環境の構築については、以下の関連記事をご参照ください。

https://zenn.dev/yuyakato/articles/3059fb69da41cd

MinIOコンテナを起動する

Dockerパッケージをインストールした後、以下の手順でMinIOのコンテナを起動します。

  1. DSMにログインする。
  2. データ保存用の共有フォルダ、データ用ディレクトリを作成する。
  3. メニューから「Docker」を起動する。
  4. Dockerイメージをダウンロードする。
    1. タブの「レジストリ」を選択する。
    2. 右上の検索ボックスに「minio」と入力して検索する。
    3. minio/minio」イメージを選択する。
    4. 「ダウンロード」ボタンを押下する。
    5. 「タグの選択」ダイアログボックスで使用したいタグを選択する。
    6. 「選択」ボタンを押下する。
    7. ダウンロード完了の通知が表示されるまで待機する。
  5. Dockerコンテナを起動する。
    1. タブの「イメージ」を選択する。
    2. MinIOのDockerイメージを選択する。
    3. 「起動」ボタンを押下する。
    4. 「全般設定」ダイアログボックスで「自動起動を有効にする」をチェックする。(必要に応じて)
    5. 「全般設定」ダイアログボックスで「詳細設定」ボタンを押下して、以下の環境変数を設定する。
      • MINIO_ROOT_USER: 管理者ユーザのユーザ名
      • MINIO_ROOT_PASSWORD: 管理者ユーザのパスワード
    6. 「全般設定」ダイアログボックスで「詳細設定」ボタンを押下して、以下の起動コマンドを設定する。
      • 起動コマンド: server /data --console-address :9001
      • この例では、/dataディレクトリにデータを保存し、管理コンソールを9001/tcpで待ち受けします。
    7. 「ポート設定」ダイアログボックスでサービス用の9000/tcp、管理コンソール用の9001/tcpをローカルポートにマップする。
    8. 「ボリューム設定」ダイアログボックスで/dataディレクトリ(起動コマンドで指定したパス)にデータ用ディレクトリをマップする。

MinIOのDockerイメージの詳細については、Docker Hubをご参照ください。

https://registry.hub.docker.com/r/minio/minio/

設定例

Synology NASのDockerコンテナは、その設定をエクスポートすることができます。具体例を以下に示します。

インポートする場合は、以下の箇所を適宜書き換える必要があります。

  • cmd: データを保存するディレクトリ、管理コンソールの待ち受けポート番号を指定します。
  • env_variables:
    • TZ: タイムゾーンを指定します。
    • MINIO_ROOT_USER: 管理者ユーザのユーザ名を指定します。
    • MINIO_ROOT_PASSWORD: 管理者ユーザのパスワードを指定します。
  • name: Dockerコンテナの名称を指定します。
  • port_bindings: マップするポートを指定します。
  • volume_bindings: データを保存するディレクトリを指定します。
{
   "CapAdd" : null,
   "CapDrop" : null,
   "cmd" : "server /data --console-address :9001",
   "cpu_priority" : 50,
   "enable_publish_all_ports" : false,
   "enable_restart_policy" : true,
   "enabled" : true,
   "entrypoint_default" : "/usr/bin/docker-entrypoint.sh",
   "env_variables" : [
      {
         "key" : "PATH",
         "value" : "/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      },
      {
         "key" : "container",
         "value" : "oci"
      },
      {
         "key" : "MINIO_ACCESS_KEY_FILE",
         "value" : "access_key"
      },
      {
         "key" : "MINIO_SECRET_KEY_FILE",
         "value" : "secret_key"
      },
      {
         "key" : "MINIO_ROOT_USER_FILE",
         "value" : "access_key"
      },
      {
         "key" : "MINIO_ROOT_PASSWORD_FILE",
         "value" : "secret_key"
      },
      {
         "key" : "MINIO_KMS_SECRET_KEY_FILE",
         "value" : "kms_master_key"
      },
      {
         "key" : "MINIO_UPDATE_MINISIGN_PUBKEY",
         "value" : "RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
      },
      {
         "key" : "MINIO_CONFIG_ENV_FILE",
         "value" : "config.env"
      },
      {
         "key" : "MINIO_ROOT_PASSWORD",
         "value" : "password"
      },
      {
         "key" : "MINIO_ROOT_USER",
         "value" : "root"
      }
   ],
   "exporting" : false,
   "id" : "d0283fa38c9b8b9f94f5e7be7222478c79b75915f29a7097d74398f879b71eae",
   "image" : "minio/minio:RELEASE.2022-03-03T21-21-16Z",
   "is_ddsm" : false,
   "is_package" : false,
   "links" : [],
   "memory_limit" : 0,
   "name" : "minio",
   "network" : [
      {
         "driver" : "bridge",
         "name" : "bridge"
      }
   ],
   "network_mode" : "bridge",
   "port_bindings" : [
      {
         "container_port" : 9000,
         "host_port" : 19000,
         "type" : "tcp"
      },
      {
         "container_port" : 9001,
         "host_port" : 19001,
         "type" : "tcp"
      }
   ],
   "privileged" : false,
   "shortcut" : {
      "enable_shortcut" : false,
      "enable_status_page" : false,
      "enable_web_page" : false,
      "web_page_url" : ""
   },
   "use_host_network" : false,
   "volume_bindings" : [
      {
         "host_volume_file" : "/docker/minio",
         "mount_point" : "/data",
         "type" : "rw"
      }
   ]
}

管理コンソールにアクセスする

MinIOを起動した後、以下のURLから管理コンソールにアクセスすることができます。(19001/tcpに管理コンソール用のポートをマッピングした場合)

http://<NASのホスト名/IPアドレス>:19001/

環境構築の直後は管理者ユーザのみ存在するため、MINIO_ROOT_USER環境変数で指定したユーザ名、MINIO_ROOT_PASSWORD環境変数で指定したパスワードを使用してログインしてください。

最後に

Synology NAS上に、MinIO環境を簡単に構築することができました。
Dockerイメージが提供されているソフトウェアであれば、同じように手軽に起動できると思います。

自由度の高いSynology NAS、なかなかおすすめです。

関連記事

Discussion