# Dockerで速攻でFTPサーバを立てて外から見れるようにするまで
仕事で調査のためにconohaに使い捨てのインスタンスを作ってFTPサーバ立てたときのメモ。
# Docker導入
Install Docker Engine on CentOS
$ sudo yum install -y yum-utils
# リポジトリ追加
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# dockerインストール
$ sudo yum install docker-ce docker-ce-cli containerd.io
# docker起動
$ sudo systemctl start docker
# dockerコマンドが実行できることを確認
$ docker --help
# pure-ftpdイメージを起動
$ docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST=[グローバルIP]" stilliard/pure-ftpd:hardened
TIP
ポイントは"PUBLICHOST=[グローバルIP]"
の部分。
公式ドキュメントや検索して出てくる資料では、"PUBLICHOST=localhost"
と書いてあるが、外部から見れるようにする場合、グローバルIPを指定してdockerイメージを起動する必要があった。
# FTPユーザ作成
# コンテナ内に入る
$ docker exec -it ftpd_server bash
# FTPユーザ作成(この例ではtestというユーザを作る)
root@xxx:$ pure-pw useradd test -f /etc/pure-ftpd/passwd/pureftpd.passwd -m -u ftpuser -d /home/ftpusers/test
Password: ******** (パスワード)
Enter it again: ******** (パスワード確認)
# フォルダがなければ作成する
$ cd /home/ftpusers/
$ ls -al # ユーザ用のフォルダがあるかどうか確認
$ mkdir test # なければ作成
$ chown ftpuser:ftpgroup test # 権限設定
$ exit # コンテナから出る
# ポート開放
21ポートを開放する。
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload
# 完了
検証用に使い捨ての環境を作ったときの手順なので、セキュリティ面の考慮は出来てないので注意。