Synology NAS上でMinIOをDockerコンテナとして動かす
3行まとめ
- Synology NASではDockerコンテナを起動できる。
- MinIOを使えばローカル環境にオブジェクトストレージを手軽に構築できる。
- Synology NAS上でMinIOを起動することで、RAID構成のオブジェクトストレージ環境を手軽に構築できる。
はじめに
Synology製のNAS(Network Attached Storage)は、比較的自由度が高く、普通のLinuxマシンのようにいろいろなことができます。
今回は、そんなSynology NASでMinIOを動かしてみました。
MinIOとは?
オープンソースのオブジェクトストレージです。端的に言えば「ローカルで動作するAmazon S3みたいなもの」です。
MinIOに関しては豊富に情報がありますので、詳細は割愛します。なお、公式の動画では「ミンアイオー」と発音されているようです。(個人的には「ミニオ」と呼んでいました)
環境とDockerパッケージのインストール
今回使用したSynology NASは「DS720+」という機種です。
スペックやDocker環境の構築については、以下の関連記事をご参照ください。
MinIOコンテナを起動する
Dockerパッケージをインストールした後、以下の手順でMinIOのコンテナを起動します。
- DSMにログインする。
- データ保存用の共有フォルダ、データ用ディレクトリを作成する。
- メニューから「Docker」を起動する。
- Dockerイメージをダウンロードする。
- タブの「レジストリ」を選択する。
- 右上の検索ボックスに「minio」と入力して検索する。
- 「minio/minio」イメージを選択する。
- 「ダウンロード」ボタンを押下する。
- 「タグの選択」ダイアログボックスで使用したいタグを選択する。
- 「選択」ボタンを押下する。
- ダウンロード完了の通知が表示されるまで待機する。
- Dockerコンテナを起動する。
- タブの「イメージ」を選択する。
- MinIOのDockerイメージを選択する。
- 「起動」ボタンを押下する。
- 「全般設定」ダイアログボックスで「自動起動を有効にする」をチェックする。(必要に応じて)
- 「全般設定」ダイアログボックスで「詳細設定」ボタンを押下して、以下の環境変数を設定する。
-
MINIO_ROOT_USER
: 管理者ユーザのユーザ名 -
MINIO_ROOT_PASSWORD
: 管理者ユーザのパスワード
-
- 「全般設定」ダイアログボックスで「詳細設定」ボタンを押下して、以下の起動コマンドを設定する。
- 起動コマンド:
server /data --console-address :9001
- この例では、
/data
ディレクトリにデータを保存し、管理コンソールを9001/tcp
で待ち受けします。
- 起動コマンド:
- 「ポート設定」ダイアログボックスでサービス用の
9000/tcp
、管理コンソール用の9001/tcp
をローカルポートにマップする。 - 「ボリューム設定」ダイアログボックスで
/data
ディレクトリ(起動コマンドで指定したパス)にデータ用ディレクトリをマップする。
MinIOのDockerイメージの詳細については、Docker Hubをご参照ください。
設定例
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