Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

FastDFSについて

FastDFS は、C 言語で開発されたオープンソースの軽量分散ファイルシステムです。ファイルを管理します。主な機能には、ファイルの保存、ファイルの同期、ファイルへのアクセス (ファイルのアップロード/ダウンロード) などがあります。画像 Web サイト、ビデオ Web サイトなど、ファイルに基づくオンライン サービスに特に適しています。

補足: FastDFS は Alibaba の Yu Qing の個人プロジェクトです。2008 年に FastDFS オープンソースが開発されて以来、一部のインターネット スタートアップで高く評価されています。GitHub オープンソース アドレスは https://github.com/happyfish100/fastdfs です。

この記事はDockerをベースにしています。主な内容は以下のとおりです。

1. 画像を検索する

次のコマンドを実行します:

docker 検索 fastdfs

するとインターフェースがたくさんの画像を検索しますが、どれを選択すればよいでしょうか?

いつものように、スタート数が最も多いものを選択する必要があります。何ですか?スタートナンバーが心配でハッキングされるのが怖いですか?さて、画像リポジトリに移動して確認してみましょう。

補足: 実際、これらのイメージの説明を見ると、いくつかの違いがわかります。たとえば、ygqygq2/fastdfs-nginx は fastdfs と Nginx を統合したイメージです。そこで新たな疑問が生じます。なぜ Nginx を統合するのか? fastdfs の場合、インストール後はローカルマシンでしかアクセスできません... アクセス用にファイルをアップロードするので、Web アクセスを提供するには Nginx を統合する必要がありますが、Nginx を自分でやりたい場合は... 絶対に選択しません。 season/fastdfs イメージは比較的純粋です。 この記事は season/fastdfs イメージに基づいており、Nginx の構成も後で含まれています...

2. イメージをインストールする

次のコマンドを実行します:

docker pull season/fastdfs:1.2

バージョン 1.2 を選択した理由は、アップデート後に最新バージョンがリリースされてもこの記事が不適切にならないようにするためです。実行スクリーンショットは以下のとおりです。

3.

コンテナを作成し、ディレクトリをマウントする

コンテナを作成する前に、FastDFS について簡単に説明します。FastDFS システムには 3 つの役割があります。

  • 跟蹤服務器: トラッカー サーバーは主にスケジュールとバランス調整を担当します。すべてのストレージ サーバーとグループを管理します。起動後、各ストレージはトラッカーに接続して、所属するグループに通知し、定期的なハートビートを維持します。
  • 存儲服務器サーバー: ストレージ サーバーは主に容量とバックアップ サービスを提供します。ストレージ サーバーはグループに編成されており、各グループには複数のストレージ サーバーを配置して、相互にデータをバックアップできます。
  • 客戶端: データのアップロードやダウンロードを行うサーバー、つまり、自分のプロジェクトがデプロイされているサーバーです。

これについて言えば、次は追跡サーバー コンテナー、ストレージ サーバー コンテナー、クライアント コンテナーの 3 つのコンテナーを作成するかもしれないと友人に伝えたいのですが...

3.1. 必要なディレクトリを作成する

まず、必要なディレクトリ (データ ディレクトリ、データ ストレージ ディレクトリなど) を作成し、次のコマンドを実行します。

mkdir -p /usr/local/server/fastdfs/tracker/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/ストレージ/パス

3.2. トラッカーコンテナ(トラッキングサーバーコンテナ)を作成する

次のコマンドを実行します:

docker run -id --name トラッカー \
-p 22122:22122 \
--restart=常に --net ホスト \
-v /usr/local/server/fastdfs/tracker/data:/fastdfs/tracker/data \
season/fastdfs:1.2 トラッカー

上記のコマンドを繰り返します。

  • -d: コンテナをバックグラウンドで実行する
  • -p: コンテナ内で使用されるネットワークポートを、使用するホストにマッピングする指定
  • --name: 作成するコンテナの名前を指定します
  • -v: コンテナとホスト間のディレクトリをマウントする

3.3. ストレージコンテナ(ストレージサーバーコンテナ)を作成する

実行コマンド(最終実行コマンドではありませんので、ご自身の IP アドレスに変更してください):

docker run -id --name ストレージ \
--restart=常に --net ホスト \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-e TRACKER_SERVER="10.211.55.4:22122" \
season/fastdfs:1.2 ストレージ

3.4、クライアントテスト

2 つのコンテナが作成されますが、この時点では実際に関連付けられていないため、トラッカー コンテナに入り、client.conf を通じてテストします。

docker exec -it トラッカー bash
/etc/fdfs/ に移動します
ls
猫クライアント.conf

出力されたclient.confすべてデフォルト設定であり、 track_serverアドレスを見つけることができます。

接続を試してください:

fdfs_monitor クライアント.conf

すると、次のような結果になります。

エラー - ファイル: ../common/connection_pool.c、行: 84、192.168.209.121:22122 への接続失敗、エラー番号: 110、エラー情報: 接続がタイムアウトしました

つまり、クライアント構成を変更する前に、デフォルトのトラッカーは192.168.209.121アドレスに接続するので、次の手順はクライアント構成ファイルを構成することです。

3.4. client.conf 設定ファイルを変更する

docker exec -it tracker bash vi vim コマンドを使用できないため、client.conf 構成ファイルをコピーし、ホスト マシンで変更してから、貼り付けるだけです。

次のコマンドを実行します:

docker cp trakcer:/etc/fdfs/client.conf /usr/local/server/fastdfs/

docker コマンドを使用して、設定ファイル/usr/local/server/fastdfs/ディレクトリにコピーします。

このファイルを編集して、tracker_url アドレスを変更します ( vi client.conf )。

変更後に変更を保存し、変更したファイルを元に戻します。指示コマンド:

docker cp /usr/local/server/fastdfs/client.conf トラッカー:/etc/fdfs

この時点で、構成ファイルが変更されました。次に、ファイルアップロードテストを作成します。

4. ファイルアップロードテスト

トラッカー コンテナに入るには、次のコマンドを実行します。

docker exec -it トラッカー bash

txt ファイルを作成するだけです:

echo "niceyoo" > niceyoo.txt

次に、fdfs_upload_file コマンドを使用して niceyoo.txt ファイルをサーバーにアップロードします。

fdfs_upload_file /etc/fdfs/client.conf niceyoo.txt

この時点で次のエラーが報告された場合:

次に、このパスを作成し、存在しない場合はスキップします。

mkdir -p /home/yuqing/fastdfs

ディレクトリを作成して再度送信してください:

ファイル名をコピーします: group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txtこの名前は、後で nginx を構成するときにアクセス ファイル パスとして使用されます。

前にホスト ディレクトリをマウントしたので、 cd /usr/local/server/fastdfsに移動して確認してみましょう。

cd /usr/local/server/fastdfs/data/storage/data
ls

出力は次のようになります。

5. Nginxを設定する

前回の補足で述べたように、デフォルトではアップロードされたファイルはローカルでしかアクセスできません。もちろん、これは絶対に受け入れられないので、Web アクセスの効果を実現するために Nginx を設定する必要があります。

nginx ディレクトリを作成します。

mkdir -p /usr/local/server/fastdfs/nginx/

ストレージ コンテナーに nginx 構成ファイルをコピーします。

docker cp ストレージ:/etc/nginx/conf/nginx.conf /usr/local/server/fastdfs/nginx/

nginx の設定を変更してください:

vi /usr/local/server/fastdfs/nginx/nginx.conf

ローカル ノードを見つけて、次のように変更します。

 位置 / {
    ルート /fastdfs/store_path/data;
    ngx_fastdfs_モジュール;
 }

関連するスクリーンショットは次のとおりです。

次のステップは、nginx コンテナを作成し、作成した構成ファイルにポイントすることです。

nginx をインストールしていない場合は、次の手順を実行することもできます。デフォルトでは、イメージをプルしてインストールするのに役立ちます。

注意: 実行する前にIPアドレスを変更してください

docker run -id --name fastdfs_nginx \
--restart=常に\
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-v /usr/local/server/fastdfs/nginx/nginx.conf:/etc/nginx/conf/nginx.conf \
-p 8888:80 \
-e トラッカーサーバー=10.211.55.4:22122 \
シーズン/fastdfs:1.2 nginx

この時点で、作成され起動されたコンテナを見てみましょう。

以前アップロードしたファイルgroup1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txtをテストし、次のコマンドを実行します。

カール -i http://127.0.0.1:8888/group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt

実行結果:

この時点で、プロセス全体が正常に構築されました。ブラウザからアクセスしてみましょう。

工事が完了した後、プロジェクトでどのように活用しますか?

SpringBootはFastDFS依存関係を統合してファイルアップロードを実装します

これで、Docker で FastDFS ファイルシステムを構築する方法 (マルチピクチャ チュートリアル) に関するこの記事は終了です。Docker で FastDFS を構築する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例
  • Docker に fastdfs イメージをインストールする際の注意事項
  • DockerにFastDFSをインストールする方法
  • Docker で FastDFS をデプロイする方法
  • docker compose を使用して fastDFS ファイル サーバーを構築する方法

<<:  MySQL インデックスに関するヒントのまとめ

>>:  CSS 手法を使用してモジュール性を実現する例

推薦する

動的なセカンダリメニューを実現するためのCSS

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

InnoDB がトランザクション分離レベルを巧みに実装する方法

序文前回の記事「MySQL ロック メカニズムの詳細説明」では、InnoDB のロック メカニズムに...

複数人チャットルームを実現する js コード

この記事の例では、多人数チャットルームを実装するためのjsコードの具体的なコードを参考までに共有して...

Vue3とVue2の利点のまとめ

目次1. なぜ vue3 が必要なのでしょうか? 2. vue3の利点3. 応答原則の違い4. ライ...

W3C チュートリアル (12): W3C SOAP アクティビティ

Web サービスは、アプリケーション間の通信に関係しています。SOAP は、Web サービス間の X...

Vue3は独自のページングコンポーネントをカプセル化します

この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...

Linux userdel コマンドの使用法

1. コマンドの紹介userdel (ユーザー削除) コマンドは、ユーザー アカウントと関連ファイル...

vuex の補助関数 mapGetters の基本的な使い方の詳細な説明

mapGettersヘルパー関数mapGettersヘルパー関数は、ストア内のゲッターをローカルの計...

インターネットウェブデザインにおけるバイオニックデザインの簡単な紹介

バイオニックデザインといえば、飛行機の発明、ドバイのブルジュ・アル・アラブ、平泳ぎなどを思い浮かべる...

CSS メニューボタンアニメーション

ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

MySQL 5.7.21 のインストールと設定方法のグラフィックチュートリアル (ウィンドウ)

ウィンドウ環境にmysql5.7.21をインストールします。詳細は次のとおりです。 1. MySQL...

html 内の絶対パス URL と相対パス URL、サブディレクトリ、親ディレクトリ、ルート ディレクトリ

絶対 URL は、インターネット上の特定のファイルに必要なすべてのコンテンツを表すために使用されます...

MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション

企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...