Dockerを用いたS3互換ローカルオブジェクトストレージRustFSの構築手順

前提環境の確認

RustFSのデプロイにはDocker環境が必須となる。まずはローカルマシンにDockerがインストールされているか確認する。ターミナルを開き、以下のコマンドを実行してバージョン情報を取得する。

docker --version

バージョン番号が表示されれば準備完了である。コマンドが見つからない場合は、OSに応じたDockerエンジンまたはDocker Desktopを導入してほしい。

また、コンテナを削除してもデータが失われないよう、ホストマシンのディスクにデータ永続化用の十分な空き容量を確保しておくことを推奨する。

データ永続化を伴うコンテナの起動

コンテナ再作成時のデータ消失を防ぐため、ホストのディレクトリをコンテナにマウントして起動する。以下のコマンドをコピーし、必要に応じてパラメータを変更して実行する。

docker run -d \
  --name rustfs_local \
  -p 19000:9000 \
  -p 19001:9001 \
  -v /opt/rustfs_data:/data \
  -e RUSTFS_ACCESS_KEY=ROOT_ACCESS \
  -e RUSTFS_SECRET_KEY=P@ssw0rd! \
  rustfs/rustfs:latest

各オプションの概要は以下の通りである:

  • --name rustfs_local: コンテナの識別名。運用時の操作が容易になる。
  • -p 19000:9000: S3 API通信用のポートマッピング。外部クライアントは19000番ポートでアクセスする。
  • -p 19001:9001: Web管理コンソール用のポートマッピング。ブラウザから19001番ポートでアクセスする。
  • -v /opt/rustfs_data:/data: データ永続化のためのマウント設定。ホストの/opt/rustfs_dataにデータが保存される。
  • RUSTFS_ACCESS_KEY: 認証用のアクセスキー(S3のAKに相当)。
  • RUSTFS_SECRET_KEY: 認証用のシークレットキー(S3のSKに相当)。安全な文字列を指定すること。

起動後、以下のコマンドでステータスを確認する。

docker container ls

リスト内でrustfs_localのSTATUSがUpになっていれば、サービスは正常に起動している。

Web管理コンソールへのアクセス

ブラウザを起動し、以下のURLにアクセスする。

http://localhost:19001

ログイン画面が表示されたら、環境変数として設定した認証情報を入力する。

  • Access Key: ROOT_ACCESS
  • Secret Key: P@ssw0rd!

ログイン後は、バケットの作成、オブジェクトのアップロード・削除、アクセス権限の変更などをGUI上で直感的に操作できる。

S3インターフェースの動作検証

RustFSは標準的なS3プロトコルと完全な互換性を持つ。AWS CLIを用いて、実際のAPI通信を検証する。

AWS CLIのセットアップ

awscliがインストールされている前提で、以下のコマンドを実行し認証情報を設定する。

aws configure

対話形式で以下の通り入力する。

AWS Access Key ID [None]: ROOT_ACCESS
AWS Secret Access Key [None]: P@ssw0rd!
Default region name [None]: local
Default output format [None]: json

バケットの作成

ローカル環境のエンドポイントを明示的に指定し、検証用のバケットを作成する。

aws --endpoint-url http://localhost:19000 s3 mb s3://validation-bucket

ファイルのアップロード確認

適当なテストファイルをアップロードし、動作を確認する。

aws --endpoint-url http://localhost:19000 s3 cp sample.log s3://validation-bucket/

コマンドの実行が成功したら、Webコンソール上でvalidation-bucketの中身を確認するか、aws --endpoint-url http://localhost:19000 s3 ls s3://validation-bucket/を実行してファイルが存在することを確認する。これにより、S3 SDKを利用するアプリケーションからもシームレスに接続できることが証明される。

コンテナ運用のコマンド群

日常的なメンテナンスで頻繁に使用するコマンドを以下に挙げる。

# コンテナの停止
docker container stop rustfs_local

# コンテナの起動
docker container start rustfs_local

# ログの出力確認(トラブルシューティング用)
docker container logs -f rustfs_local

# コンテナの削除(マウントされたホスト側のデータは保持される)
docker container rm -f rustfs_local

ポート番号や認証キーを変更したい場合は、一度コンテナを削除し、新しいパラメータを指定して再度docker runを実行すればよい。

ユースケース

  • ローカル開発環境: クラウドのS3サービスの代替として利用し、本番環境への移行時のコード変更を最小限に抑える。
  • データレイク基盤の検証: Apache IcebergやDuckDBなどが前提とするストレージ層として即座に構築し、読み書きのロジックをテストする。
  • 個人用ファイルストア: 外部クラウドに依存しない、プライベートな軽量バックアップ領域として運用する。
  • ベンチマークテスト: MinIOなど他のオブジェクトストレージと並行して構築し、同一条件での性能比較を行う。

タグ: RustFS Docker S3 オブジェクトストレージ AWS CLI

10月6日 01:22 投稿