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

推薦する

ホバー画像のポップアウトポップアップ効果を実現するための純粋な CSS のサンプルコード

実施原則メイングラフィックは、背景と前景の 2 つの要素で構成されています。次のサンプルコードでは、...

登録フォームのデザインルール

随分前に「Patterns for Sign Up & Ramp Up」を読み終えました。今...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

Mysql データベース ストアド プロシージャの基本構文の説明

プロシージャ sp_name を削除します//これまで、MYSQL 構文の基礎知識について説明して...

MySQL の計画タスクとイベント スケジュール例の分析

この記事では、例を使用して、MySQL の計画されたタスクとイベントのスケジュールについて説明します...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

HTML の rel 属性の分析

.y { background: url(//img.jbzj.com/images/o_y.pn...

Linux ターミナルでドメイン IP アドレスを見つけるコマンド (5 つの方法)

このチュートリアルでは、Linux ターミナルでドメイン名またはコンピューター名の IP アドレスを...

複数の無関係なテーブルからデータをクエリし、MySQL でページングする方法

MySQL 複数の無関係なテーブルクエリデータとページング機能要件主キーと外部キーの関連付けがない ...

jsはショッピングカートの加算と減算、価格計算機能を実現します

この記事では、ショッピングカートの増減と価格計算を実現するためのjsの具体的なコードを紹介します。具...

ホストがアクセスできるようにMySQLの権限を変更する方法

mysqlのリモートアクセス権を有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

HTML の表のフレームとルール属性の詳細な説明

テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...

Windows 8 での ssh コマンドの使用記録

1. 仮想マシンとgit bashウィンドウを開き、接続の準備をします2. 仮想マシンでifconf...

Nginx Webサーバーのサンプルコードの設定方法の詳細な説明

概要今日は主に、NGINX を Web サーバーとして設定する方法を共有します。内容は次のとおりです...