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 手法を使用してモジュール性を実現する例

推薦する

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

MySQL MyISAM と InnoDB の違い

違い: 1. InnoDB はトランザクションをサポートしていますが、MyISAM はサポートしてい...

CSSはクーポンスタイルを実装するために放射状グラデーションを使用します

この記事では、CSS で放射状グラデーションを使用して、次の図に示すクーポン スタイルの効果を実現す...

ウェブサイトのデザインを改善するための役立つ提案を提供します

<br />ウェブサイトを科学的にデザインする: アイトラッキング研究から学ぶ 23 の...

CSS3 天子グリッドリストのスタイルの書き方

多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...

Windows で Graphviz をインストールして開始する方法のチュートリアル

ダウンロードとインストール環境変数の設定インストール環境変数の設定確認基本的な描画の紹介グラフディグ...

Vueのプラグインの仕組みとインストールの詳細を深く理解する

序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....

MAC で Mysql5.7.10 のルートパスワードを変更する方法

まず、MySQLをskip-grant-tablesモードで起動します: mysqld --skip...

Linuxの簡単な分析でファイアウォールの状態と外部に開いているポートの状態を確認する

1. ファイアウォールの状態を確認するファイアウォールのステータスを確認する systemctl s...

Vue.jsで実装されたカレンダープラグインの使い方を詳しく説明します

本日実装する機能は、以下の機能です。vue.js シミュレーションカレンダープラグインさて、もう無駄...

Vue フロントエンドと Django バックエンドを使用して、一定期間内のデータをクエリする方法

序文開発プロセスでは、すべてのデータではなく特定の期間内のデータをクエリするなど、クエリのフィルタリ...

wavesurfer.js によるオーディオ波形描画の実装

1. レンダリングを見る進むを選択: 後方を選択: コードは次のとおりです(例): <テンプレ...

MySQL テーブルスペースの断片化の概念と関連する問題の解決策

目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...

docker-compose を使用して MySQL を実行する方法

ディレクトリ構造 。 │ .env │ docker-compose.yml │ └─mysql ├...

MYSQLの文字セット設定方法(端末の文字セット)の詳しい説明

序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...