MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. 仮想化
  4. Docker
  5. 【Docker】FTPサーバコンテナ構築手順と使い方(Pure-ftpd Server)

【Docker】FTPサーバコンテナ構築手順と使い方(Pure-ftpd Server)

2021 3/16
Docker
2021年3月11日2021年3月16日

Dockerで簡単にFTPサーバを構築したいときはこの「Pure-ftpd Server」イメージのコンテナをおすすめします。
すでにDockerをインストール済みであれば、構築時間も1分あれば完了します。

即席でFTPサーバを立てたいのであればおすすめです。

Dockerインストールは以下を参照

あわせて読みたい
【CentOS8】Dockerインストールと起動・SSHアクセスまで(無償版CE) CentOS8でDockerインストールを実施し、CentOS8のコンテナを構築・sshアクセスまでを構築したので手順を公開します。 CentOSのバージョンは以下となります。 2020年11月...
目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

DockerコンテナでFTPサーバを簡単に構築する手順(Pure-ftpd Server)

FTPサーバのコンテナは以下のイメージから作成します。
【github】Docker Pure-ftpd Server

構築手順は簡単なので公式ページにそって実行します。

Dockerイメージダウンロード

FTPサーバのイメージをダウンロードします。

$ docker pull stilliard/pure-ftpd

コンテナイメージがダウンロードされていることを確認します。

$ docker images
REPOSITORY                              TAG       IMAGE ID       CREATED        SIZE
stilliard/pure-ftpd                     latest    1ead45bd7df2   4 months ago   148MB

Dockerコンテナ起動(FTPサーバ)

上記でイメージをダンロードできたら以下コマンドでFTPサーバのコンテナを起動します。
今回はローカルPCで起動するので「PUBLICHOST」は「localhost」とします。

$ docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST=localhost" stilliard/pure-ftpd
6dc8aeec198f803bf1e721b42d5cbad31482a6a10e519bfdf1df8fa5968ba481

正常に起動すると以下のようにFTPコンテナが表示されます。
接続ポートは21番となります。

$ docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                      NAMES
6dc8aeec198f   stilliard/pure-ftpd   "/bin/sh -c '/run.sh…"   9 seconds ago   Up 8 seconds   0.0.0.0:21->21/tcp, 0.0.0.0:30000-30009->30000-30009/tcp   ftpd_server

Dockerコンテナ(FTPサーバ)動作確認

Dockerコンテナが起動した後はFTPサーバへ接続します。
しかし、アクセスできてもユーザ名、パスワードが一致せず正常にアクセスできません。

アクセス失敗例

FTP $ ftp localhost
Trying [::1]:21 ...
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 5 allowed.
220-Local time is now 03:08. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:): test
331 User test OK. Password required
Password: 
421 Unable to read the indexed puredb file (or old format detected) - Try pure-pw mkdb
Illegal instruction: 4

デフォルトではユーザー名・パスワードが設定されていないのでFTPサーバにアクセスし、ユーザ・パスワードを設定する必要があります。

dockerコンテナにアクセスし、ユーザ・パスワード設定

以下ではFTPサーバにアクセスするためのユーザ・パスワードの設定手順となります。

対象のDockerコンテナ(ftpd_server)へアクセスします。

$ docker exec -it ftpd_server /bin/bash
root@6dc8aeec198f:/# 

コンテナ内にアクセス後、以下コマンドでユーザ・パスワードを設定します。

今回の設定例

  • ユーザ: test
  • アップロードフォルダ: /home/ftpusers/test
  • パスワード: pass

設定コマンド

root@6dc8aeec198f:/# pure-pw useradd test -f /etc/pure-ftpd/passwd/pureftpd.passwd -m -u ftpuser -d /home/ftpusers/test
Password: 
Enter it again: 
root@6dc8aeec198f:/# exit
exit
$ 

FTPサーバ動作確認(アップロード)

上記で、FPTサーバのユーザ・パスワードを設定後実際にFTPサーバの動作確認をします。

まずは、FTPサーバへアップロードするテストファイルを作成します。

$ touch test.txt

次にFTPサーバへアクセスします。
上記のユーザ・パスワードを設定し、正常にFTPサーバへアクセスできました。

FTP $ ftp localhost
Trying [::1]:21 ...
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 5 allowed.
220-Local time is now 02:54. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:): test
331 User test OK. Password required
Password: 
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.

先ほど作成した「test.txt」をPUTコマンドでアップロードします。

ftp> put test.txt
local: test.txt remote: test.txt
229 Extended Passive mode OK (|||30009|)
150 Accepted data connection
     0        0.00 KiB/s 
226 File successfully transferred

アップロードが完了したらFTPサーバのフォルダにファイルがアップされたことが確認できます。

ftp> ls
229 Extended Passive mode OK (|||30005|)
150 Accepted data connection
-rw-r--r--    1 1000       ftpgroup            0 Mar 14 02:54 test.txt
226-Options: -l 
226 1 matches total
ftp> 

FTPサーバ動作確認(ダウンロード)

次にFTPサーバからファイルをダウンロードします。
以下で、FTPサーバへアクセスします。

$ ftp localhost
Trying [::1]:21 ...
Connected to localhost.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 5 allowed.
220-Local time is now 03:37. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:): test
331 User test OK. Password required
Password: 
230 OK. Current directory is /
Remote system type is UNIX.
Using binary mode to transfer files.

FTPサーバ上に「test_get.txt」と言うファイルがあることが確認できます。

ftp> ls
229 Extended Passive mode OK (|||30008|)
150 Accepted data connection
-rw-r--r--    1 1000       ftpgroup            0 Mar 14 03:36 test_get.txt
226-Options: -l 
226 1 matches total
ftp> 

以下、GETコマンドで対象のファイルをダウンロードします。

ftp> get test_get.txt
local: test_get.txt remote: test_get.txt
229 Extended Passive mode OK (|||30002|)
150 Accepted data connection
     0        0.00 KiB/s 
226 File successfully transferred
ftp> 
ftp> exit
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.

ローカルPCに対象のファイルがダウンロードされていることが確認できました。

$ ls
test_get.txt

Dockerコンテナ(FTPサーバ)の構築方法は以上となります。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Docker
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次