Dockerは1行のコマンドでFTPサービス構築の実装を完了します

Dockerは1行のコマンドでFTPサービス構築の実装を完了します

1行のコマンド

docker run -d \
-v /share:/home/vsftpd \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-e FTP_USER=zhaoolee \
-e FTP_PASS=eelooahz \
-e PASV_ADDRESS=47.106.108.135 \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21100 \
--name zhaoolee_vsftpd \
--restart=常に\
ファウリア/vsftpd

パラメータの説明:

-dは新しいコンテナがバックグラウンドで実行されることを意味します

-v はディレクトリ マッピングの設定を意味します。例: -v /share:/home/vsftpd は、ホストの /share ディレクトリを Docker コンテナーの /home/vsftpd にマッピングします (ユーザー zhaoolee がログインすると、プログラムはアップロードされたファイルを格納するために /home/vsftpd フォルダーに zhaoolee フォルダーを自動的に作成します)

-pはマッピング ポートです。-p 20:20 はホスト ポート 20 を Docker コンテナのポート 20 にマッピングすることを意味し、-p 21:21 はホスト ポート 21 を Docker コンテナのポート 21 にマッピングすることを意味し、-p 21100-21110:21100-21110 はホストのポート 21100 ~ 21110 を Docker コンテナのポート 21100 ~ 21110 にマッピングすることを意味します。

ポートに密接に関連しているのは、アクティブ モードとパッシブ モードという 2 つの接続モードです。

  • アクティブ モード: ポート 21 は FTP のデフォルト ポートで、FTP の制御ポートです。ポート 20 は FTP のデータ ポートです。ポート 21 はクライアント接続の受信に使用され、ポート 20 はデータの送信に使用されます。サーバーが (アクティブに) ルールを設定し、クライアントがサーバーとの接続を確立すると、ポート 21 を介してデータを送信する場合は、ポート 20 を経由する必要があります。ポート 20 とポート 21 の組み合わせが、FTP のアクティブ モードです。
  • パッシブ モード: アクティブ モードにはセキュリティ上の問題があります。誰かが FTP サービスを攻撃したい場合、ポート 20 で直接ブロックされます。データが送信されるときにブロックされるのを避けるために、パッシブ モードが登場します。パッシブ モードでは、データ送信用のポート 20 が、上記のテキストの 21100-21110 などの範囲に変更されます。具体的な値はクライアントによって決定されます (21115 など)。このようにして、送信データが簡単にブロックされなくなり、セキュリティが大幅に向上します。現在、ほとんどの FTP クライアントは、デフォルトでパッシブ モードを使用してサーバーに接続します。つまり、データ送信用のポートはクライアントによって決定されます。

-eはパラメータを追加することを意味します

FTP_USERはFTPログインユーザー名です。設定例:FTP_USER=zhaoolee

FTP_PASSはFTPログインパスワードです。設定例:FTP_PASS=eelooahz

PASV_ADDRESS は外部ネットワーク IP アドレスです。たとえば、PASV_ADDRESS=104.243.20.148 です (非常に重要: ここでホストの外部 IP アドレスをバインドする必要があります。そうしないと、後で接続できなくなります。Zhaoolee はこれを調整するのに長い時間を費やしました...)

PASV_MIN_PORT は、クライアントがサーバーに接続するための最小ポート番号で、21100 (パッシブ モードのサーバーの最小ポート番号) です。

PASV_MAX_PORT は、クライアントがサーバーに接続するための最大ポート番号で、21110 (パッシブ モードのサーバーの最大ポート番号) です。

--name zhaoolee_vsftpd はコンテナ名が zhaoolee_vsftpd であることを意味します (この名前はカスタマイズできます)

--restart=always は再起動が可能であることを意味します

fauria/vsftpdはイメージ名を表します

Alibaba Cloudでテスト

ポート20、ポート21、ポート範囲21100-21110を開きます

コンテナを作成する

接続テスト (FillZilla ダウンロード リンク: https://filezilla-project.org/download.php?type=client)

FTP経由でファイルをアップロードする

まとめ:

FTPはよく使われるサービスです。ここではvsftpのdocker方式を使って構築を完了させており、コマンド1行で完了できます。
Dockerイメージfauria/vsftpdオープンソースアドレス: https://github.com/fauria/docker-vsftpd、詳細な操作ドキュメントを参照できます

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • docker pure-ftp FTPサーバーの構築方法

<<:  MySQLでの少し複雑な使用例コード

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

推薦する

Linux での SSH パスワードフリーログイン設定の詳細な説明

Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...

CSS における px、rem、em、vh、vw の違いを簡単に分析します

絶対長さピクセルpx はピクセル値であり、メートルやセンチメートルのような固定の長さです。相対的な長...

MySQLの自己接続と結合の詳細な理解

1. MySQL 自己接続MySQL では、情報を照会するときに自分自身に接続 (自己接続) する必...

HTML 終了タグの問題と W3C 標準

W3C の原則によれば、XML の各開始タグには対応する終了タグが必要です。つまり、<html...

Mysql マルチテーブル結合クエリの実行の詳細について簡単に説明します。

まず、このブログのケースデモンストレーション テーブルを作成します。 create table a(...

HTML 縦列表示テキストを使用してテキストを縦列で表示します

コードをコピーコードは次のとおりです。 <span style='display:bl...

nginx がどのようにして高いパフォーマンスとスケーラビリティを実現するのかを深く理解する

NGINX の全体的なアーキテクチャは、連携して動作する一連のプロセスによって特徴付けられます。メイ...

Docker で Portainer ビジュアル インターフェースを構築するための詳細な手順

前回述べた問題を解決するために、オンラインで検索したところ、非常に優れたビジュアル インターフェース...

GET POSTの違い

1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために...

VueはEchartsを使用して3次元棒グラフを実装します

この記事では、Echartsを使用して3次元棒グラフを実装するVueの具体的なコードを参考までに共有...

今日は、珍しいけれど役に立つJSテクニックをいくつか紹介します

1. 戻るボタンhistory.back() を使用してブラウザの「戻る」ボタンを作成します。 &l...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

Docker Swarm を使用して分散クローラー クラスターを構築する例

クローラーの開発プロセス中に、クローラーを複数のサーバーに展開する必要がある状況に遭遇したことがある...

Linux での Nginx 監視の問題

nginxのインストール仮想マシンがインターネットにアクセスできることを確認します。 1. ルートユ...

.NETCore Dockerはコンテナ化とプライベートイメージリポジトリ管理を実装します

1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...