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

推薦する

MySQLの主キーと外部キーの使用と説明を簡単に説明します

目次1. 外部キー制約外部キーとは何ですか?外部キーを使用する条件:外部キーの定義構文は次のとおりで...

Webフロントエンド開発エンジニアが習得すべきコアスキル

Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...

ブラウザのURLの前に小さなアイコンを表示する方法

多くのウェブサイトを閲覧すると、ブラウザのアドレスバーの前に小さなアイコンがあり、ブラウザのタブの位...

HTML 代替カラーコードを実現する n 通りの方法 サンプルコード

この記事では、主に HTML のサンプル コードを紹介し、次のように交互に色を変更する方法を共有しま...

CSS のグリッドプロパティの使用に関する詳細な説明

グリッドレイアウト親要素に追加された属性グリッドテンプレートの列/グリッドテンプレートの行要素の行ま...

docker を使用して Redis マスター/スレーブを構築する方法

1. Docker環境を構築する1. Dockerfileを作成する Centos:latest か...

Vueバックグラウンド管理に多言語機能を追加する例

目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...

CentOS で RPM を使用して MySQL 5.6 をインストールするチュートリアル

これまでのプロジェクトはすべて Windows システム環境にデプロイされていました。今回は Lin...

MySQLデータベースをアンインストールするための完全な手順

MySQLデータベースを完全にアンインストールするプロセスは次のとおりです。 1. MySQLサービ...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...

CentOS 6 ZLMediaKit のコンパイルとインストール分析

Centos6にZLMediaKitをインストールするZLMediaKit の作者は Ubuntu ...

WeChat アプレット計算機の例

WeChatアプレット計算機の例、参考までに、具体的な内容は次のとおりです。インデックス.wxml ...

プレーンな JS オブジェクトの代わりに Map を使用する場合

目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....

JavaScript の new 演算子を自分で実装する方法

目次コンストラクタ新しいオペレーター自分で新しいものを実装するコンストラクタnew を導入する前に、...

MySQLのファジークエリの要約

1. 一般的な使用法: (1)%で使用する% は 1 つ以上の文字のワイルドカードを表します。たとえ...