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 を実行する方法

推薦する

テーブルを動的に読み込み、削除する JavaScript

この記事では、テーブルを動的に読み込み、削除するためのJavaScriptの具体的なコードを参考まで...

MySQL で重複レコードをクエリして削除する方法の完全なガイド

序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...

Dockerイメージをプルしてバージョンを確認する方法

イメージのバージョンとタグを確認するには、docker hubで確認する必要があります。アドレスは次...

ウェブサイトを黒、白、グレーにする4つのコードの詳細な説明

2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...

MacOS Catalina アップグレード後の VMware ブラック スクリーン問題に対する完璧な解決策の詳細な説明

MacOS Catalina アップグレード後の VMware ブラック スクリーンに対する完璧なソ...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

MySQLで時間別データと最後の時間別データの差をクエリするアイデアの詳細な説明

1. はじめに要件は、特定の時間範囲内で、1 時間ごとのデータと前の 1 時間ごとのデータの差と比率...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

リクエストを転送したり、静的リソースファイルにアクセスしたりする複数の場所への nginx の実装

この記事では主に、リクエストを転送したり、静的リソース ファイルにアクセスしたりする nginx の...

セマンティック HTML タグの紹介

ここ数年、ウェブサイト開発では DIV+CSS が非常に人気があり、当時は大きな騒動を引き起こしまし...

Vueはカウントダウン機能を実装する

この記事の例では、カウントダウン機能を実装するためのVueの具体的なコードを参考までに共有しています...

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

Windows 10にWSL2 Ubuntu20.04をインストールしてdocker環境を構築する方法

WSLを有効にするシステムがWindows 10 2004以降であることを確認してください 「メニュ...

HTML フォーム_PowerNode Java アカデミー

1. フォーム1. フォームの役割HTML フォームは、さまざまな種類のユーザー入力を受け取り、ユー...

MySQL のファントムリード問題を解決する方法

目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...