使用docker容器搭建ftp服务器详细流程

2022-04-21 10:04:01

使用的的镜像是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/vsftpddocker容器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

  • 作者:哟哟哈哈
  • 原文链接:https://blog.csdn.net/zd18423418323/article/details/83513968
    更新时间:2022-04-21 10:04:01