Linux Docker 之 Vsftpd 安装

最近公司因为使用fastdfs做文件存储,但因为项目需要,需要使用FTP的方式访问fastdfs对应的文件。由此想到的解决方案为两者均挂载同一文件目录。

1.首先下载vsftpd镜像

docker pull fauria/vsftpd

2.运行镜像并将文件目录挂载至fastdfs存储目录

设置的fastdfs文件实际存储目录: /var/fastdfs/storage/data

docker run -p 55508:20 -p 55509:21 -p  55540-55550:55540-55550 \
 -e FTP_USER=test -e FTP_PASS=test \
 -e PASV_ADDRESS=宿主机外网IP \
 -e PASV_MIN_PORT=55540 -e PASV_MAX_PORT=55550 \
 -v /var/fastdfs/storage/data:/home/vsftpd/admin/ \
 --name vsftpd --privileged=true --restart=always fauria/vsftpd

参数解读:

  • /var/fastdfs/storage/data:/home/vsftpd:映射 docker 容器 ftp 文件根目录(冒号前面是宿主机的目录)
  • -p:映射 docker 端口(冒号前面是宿主机的端口)
  • -e FTP_USER=test -e FTP_PASS=test :设置默认的用户名密码(都为 test)
  • PASV_ADDRESS:宿主机外网 ip,当需要使用被动模式时必须设置。
  • PASV_MIN_PORT~ PASV_MAX_PORT:给客户端提供下载服务随机端口号范围,默认  55540-55550,与前面的 docker 端口映射设置成一样。

由于fauria/vsftpd的编排文件中有问题,故而以上的运行不能快速启动使用,原因是挂载了宿主机的目录后,由于宿主机对应目录已存在较多文件,从而引发vsftpd中授权文件多而不能快速启用

解决方案:

1.关闭针对/home/vsftpd/的权限管理

进入:vsftpd内部

docker exec -it vsftpd /bin/sh

找到run-vsftpd.sh文件,默认文件目录:/usr/sbin/run-vsftpd.sh

vi /usr/sbin/run-vsftpd.sh

注释:chown -R ftp:ftp /home/vsftpd/

  由于连接比较缓慢存在缓存,调整期参数,添加以下代码:

sed -i "/reverse_lookup_enable/d" /etc/vsftpd/vsftpd.conf
echo "reverse_lookup_enable=NO" >> /etc/vsftpd/vsftpd.conf

Linux Docker 之 Vsftpd 安装_第1张图片

保存文件后直接在docker中运行:/usr/sbin/run-vsftpd.sh

sh /usr/sbin/run-vsftpd.sh

2.vsftpd和fastdfs同时创建对应容器

你可能感兴趣的:(Docker)