使用docker 创建ftp服务器

一、镜像拉取

# docker pull fauria/vsftpd

二、创建vsftpd容器

#docker run -d\

 -v /my/data/directory:/home/vsftpd\        //home/vsftpd: docker容器ftp文件根目录,登录用户根目录为/home/vsftpd/username/

 -v /var/log/vsftpd/: /var/log/vsftpd/\        //var/log/vsftpd: docker容器ftp存储日志目录

 -p 2340:20 -p 2341:21\         //ftp的2个端口号做docker端口映射的时候请保持2个端口号相差1的特点

 -p 21100-21110:21100-21110\        //docker端口映射至宿主机

 -e FTP_USER=test\        //配置用户,默认是admin

 -e FTP_PASS=123456\        //配置密码

 -e PASV_MIN_PORT=21100\

 -e PASV_MAX_PORT=21110 \    //PASV_MIN_PORT~ PASV_MAX_PORT给客服端提供下载服务随机端口号范围,默认21100-21110,docker端口映射请设置成一样

 -e PASV_ADDRESS=192.168.222.220\        //当需要使用被动模式时必须设置,定义其他服务器访问本机使用的ip。关于主动/被动访问模式更多信息,请参考:https://www.cnblogs.com/xiaohh/p/4789813.html 

 -e  LOG_STDOUT=1\        //是否开启日志,任意值开启

 --name vsftpd --restart=always fauria/vsftpd
docker run -d -v /my/data/directory:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=myuser -e FTP_PASS=mypass \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd

三、个性化设置

1.进入容器

# docker exec -i -t vsftpd bash

2.为新用户创建目录

# mkdir /home/vsftpd/Public

3.编辑用户文件,奇数行配置用户名,偶数行配置密码

vi /etc/vsftpd/virtual_users.txt

注意:新增的用户名必须和创建的目录名一致,不然会导致登陆出现500错误。

# chown -R ftp:ftp /home/vsftpd(请别忘了这一句的执行,否者写文件的时候可能会存在没有权限问题)

4.将新增用户写入服务数据库

# /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

5.退出容器

exit

6.重启容器

docker restart vsftpd