メンチカツには醤油でしょ!!

AWS/Java/Node.js/Spreadsheets/Docker/Jenkins/コミュニティ・勉強会レポを主とした技術系ブログ

DockerでFTPサーバーを構築したら簡単すぎた

pullしてrunするだけがいい

色々検討しても良いのかも知れませんが先日のOracle Databaseの件のように動かないコンテナに苦労したり、不可能な環境構築にトライしたくない領域だったので、今回は最初からDocker Hubを検索。Most downloads, most starsを選択しました。
https://hub.docker.com/r/stilliard/pure-ftpd/

なお、SFTPならコチラがMost downloads, most starsでした。
https://hub.docker.com/r/atmoz/sftp/

さて、通常はドキュメント通りに進めますがpure-ftpd:hardened だとアップロード後のリネームができなかったりしたので、pur-ftpd:latestを使います。

> docker pull stilliard/pure-ftpd:latest

latest: Pulling from stilliard/pure-ftpd
386a066cd84a: Pull complete
:::::略:::::: Pull complete
26eb4ca837a0: Pull complete
Digest: sha256:d21f3d12be52d8669b5561c7325f60013b61c9920a78db9d85e2e1545cbdae4f
Status: Downloaded newer image for stilliard/pure-ftpd:latest

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

0206a6e60ff6f738a1e23beecdb46d4631da2e654962dc18e1c7526e325cc840

> docker ps -a

CONTAINER ID  IMAGE                       COMMAND                 CREATED                 STATUS        PORTS                                                     NAMES
0206a6e60ff6  stilliard/pure-ftpd:latest  "/bin/sh -c '/run...."  Less than a second ago  Up 3 seconds  0.0.0.0:21->21/tcp, 0.0.0.0:30000-30009->30000-30009/tcp  ftpd_server

> docker exec -it 0206a6e60ff6 bash

root@0206a6e60ff6:/# cd /home/ftpusers/

root@0206a6e60ff6:/home/ftpusers# ls -la

total 8
drwxr-xr-x 2 root root 4096 Feb 7 20:39 .
drwxr-xr-x 3 root root 4096 Nov 30 08:28 ..

root@0206a6e60ff6:/home/ftpusers# pure-pw useradd my-account-name -f /etc/pure-ftpd/passwd/pureftpd.passwd -m -u ftpuser -d /home/ftpusers/my-account-name

Password: ********
Enter it again: ********

root@0206a6e60ff6:/home/ftpusers# mkdir my-account-name

root@0206a6e60ff6:/home/ftpusers# chown ftpuser:ftpgroup my-account-name

root@0206a6e60ff6:/home/ftpusers# ls -la

total 12
drwxr-xr-x 3 root root 4096 Feb 7 20:41 .
drwxr-xr-x 3 root root 4096 Nov 30 08:28 ..
drwxr-xr-x 3 ftpuser ftpgroup 4096 Feb 7 20:41 my-account-name

/home/ftpuser/【設定したアカウント名】
ディレクトリが作成されていることが確認できます。
ここでFFFTPなどでファイルアップロードなどします。
ユーザー名とパスワードはpure-pwコマンドの時に設定したものです。
(下記の例はtestというディレクトリを作成した例)

root@0206a6e60ff6:/home/ftpusers# cd my-account-name

root@0206a6e60ff6:/home/ftpusers/bob# ls -la

total 12
drwxr-xr-x 3 ftpuser ftpgroup 4096 Feb 7 20:41 .
drwxr-xr-x 3 root root 4096 Feb 7 20:41 ..
drwxr-xr-x 2 ftpuser ftpgroup 4096 Feb 7 20:41 test

簡単すぎて鼻血出そう...