使用的的镜像是fauria/vsftpd

ftp有2中模式

 主动模式

 文件传输是客服端建立服务 然后ftp服务端根据这个服务推送文件数据过来

被动模式

文件传输是ftp服务根据PASV_MIN_PORT~ PASV_MAX_PORT这2个环境变量的范围随机一个ip提供服务给客服端下载

总结

根据上面的模式 使用主动模式 客服端如果存在防火墙请把服务端口号开放出来

使用被动模式 服务端就要把PASV_MIN_PORT~ PASV_MAX_PORT范围的端口开放出来

如果使用了docker PASV_MIN_PORT~ PASV_MAX_PORT 这个范围的端口请映射成一样的

如果不一样会不会有问题我也不知道(我猜测绝壁是有问题的,一样的我测试没有问题)

 

 

下载镜像:

docker pull fauria/vsftpd

 

 

docker stop vsftpd

docker rm vsftpd

docker run -d \

 -v /my/data/directory:/home/vsftpd \

 -v /var/log/vsftpd/: /var/log/vsftpd/\

 -p 2340:20\

 -p 2341:21 -p 21100-21110:21100-21110\

 -e FTP_USER=myuser \

 -e FTP_PASS=mypass \

 -e PASV_MIN_PORT=21100\

 -e PASV_MAX_PORT=21110 \

 -e PASV_ADDRESS=192.168.222.220\

 -e  LOG_STDOUT=1

 --name vsftpd --restart=always fauria/vsftpd

注意: 21100-21110:21100-21110 \ 这儿的端口映射是这2个环境变量的范围

-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \ 映射成一样的

PASV_MIN_PORT和PASV_MAX_PORT的默认值也是这2个数

这个是文件传输用的端口号一定要设置一样 如果不一样会造成文件无法传输

 

配置说明:

ftp的2个端口号 做docker端口映射的时候请保持2个端口号相差1的特点

/home/vsftpd: docker容器ftp文件根目录

/var/log/vsftpd docker容器ftp存储日志目录

 

环境变量:

PASV_MIN_PORT~ PASV_MAX_PORT给客服端提供下载服务随机端口号范围

默认21100-21110 docker端口映射请设置成一样

 

FTP_USER 用户名 默认admin

FTP_PASS 密码 默认随机字符串

PASV_ADDRESS 其他服务器访问本机使用的ip  

 LOG_STDOUT 是否开启日志 任意值开启

注意:如果启动日志有错误: /sbin/ip is missing 这个表示你使用被动模式将是无法访问的 这时一定要配置PASV_ADDRESS这个环境变量 提供给客服端访问的ip地址

所有建议PASV_ADDRESS这个环境变量必须配置(如果你不需要被动模式可以无视)

 

添加新的用户

docker exec -i -t vsftpd bash
mkdir /home/vsftpd/zhang
(这儿的myuser 就是要添加的用户名)
chown -R ftp:ftp /home/vsftpd(请别忘了这一句的执行否者写文件的时候可能会存在没有权限问题)
 
vi /etc/vsftpd/virtual_users.txt
(奇数行用户名 偶数行密码)
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐