Linux下使用docker 拉取 vsftpd 镜像搭建 Ftp 服务器,连接 Ftp 时遇到的错误(425 Failed to establish connection)...

Ftp踩坑系列:

Linux上的ftp服务器 vsftpd 之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传

一、前言

出现这个问题,在docker这类容器出现之前,原因可能是防火墙的问题:

FTP服务器一般默认使用被动模式,即,客户端一般会和服务端的21端口建立连接,该连接用来传输命令。真正传输数据时,服务端会返回一个随机端口,告诉客户端新建连接去连接这个随机端口,来传输数据。

一般来说,这个随机端口,肯定是没在防火墙里配置的,所以会无法建立连接。

此时,直接先关掉防火墙即可。

 

二、docker场景下,该问题的解决方案

现在容器越发流行,基于docker构建各类服务显得更加方便。但是,一不注意,还是会踩坑的。

昨天,同事就是遇到这么个问题,说是能连上,但是涉及到数据就看不到,比如查看目录等。

一开始,也怀疑是防火墙的问题,于是直接把防火墙关了,发现问题依旧。

 

后来经过一番定位,发现是vsftpd是基于docker的,其启动docker容器的命令如下:

docker run -d -v /my/data/directory:/home/vsftpd -v /var/log/vsftpd/:/var/log/vsftpd/ -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=ROOT -e FTP_PASS=ROOT -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS=0.0.0.0 -e LOG_STDOUT=1 --name vsftpd --restart=always fauria/vsftpd

 

注意以上红色部门,指定了各类端口相关的配置。

为了快速查找问题,停止了旧的容器后,用下面的命令重新起了个容器,(直接改成了使用宿主机的网络):

docker run -d -v /my/data/directory:/home/vsftpd -v /var/log/vsftpd/:/var/log/vsftpd/  --network=host -e FTP_USER=ROOT -e FTP_PASS=ROOT  -e LOG_STDOUT=1 --name vsftpd1.1 --restart=always fauria/vsftpd

 

进行了上述的修改后,问题解决了。

具体原因还需要查找,找到了再更新。

 

三、基于docker构建vsftpd容器,相关配置

 

其中,DockerFile:

FROM centos:7
MAINTAINER jason2019
RUN yum install -y vsftpd
#RUN mkdir -p /data/ftp
RUN useradd -d /data/ftp -s /bin/bash ROOT -p ROOT
RUN echo "ROOT:ROOT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值