1 下载
下载镜像
$ docker pull fauria/vsftpd
2 主动模式启动
主动模式下在登录成功后,需要客户端开放动态端口,由FTP主动连接客户端,形成连接。需要客户端在防火墙允许动态端口。
创建外部保存文件的位置
$ mkdir -p /opt/files
启动
$ docker run -d -v /opt/files:/home/vsftpd \
-p 21:21 \
-e FTP_USER=izqy -e FTP_PASS=123456 \
--name vsftpd --restart=always fauria/vsftpd
防火墙需要开放21
端口
$ firewall-cmd --add-port=21/tcp --permanent
$ firewall-cmd --reload
至此启动成功,使用winscp
软件连接ftp测试,连接过程中出现错误如下
Server sent passive reply with unroutable address 172.17.0.3, using host address instead.
在连接选项中的高级
中设置连接模式,关闭被动模式
3 双模式启动
被动模式下在登录成功后,服务端开放动态端口,由客户端连接FTP服务器,形成连接。需要FTP服务器的防火墙允许动态端口。
主动模式和被动模式双模式启动,开放用于客户端连接的其他接口,设置接口范围 21100-21110
$ docker run -d -v /opt/files:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=izqy -e FTP_PASS=123456 \
-e PASV_ADDRESS=192.111.0.111 \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
其中 192.111.0.111
是服务器IP, 防火墙需要开放21
端口,阿里云服务器中 PASV_ADDRESS 需要设置成公网IP,否则的话 vpc 中的机器无法使用内网 ip 访问 ftp
$ firewall-cmd --add-port=20-21/tcp --permanent
$ firewall-cmd --add-port=21100-21110/tcp --permanent
$ firewall-cmd --reload
使用winscp
软件直接连接ftp进行测试
4 添加用户
添加一个 izqy2
用户,密码是 123456
进入容器
$ docker exec -i -t vsftpd bash
添加用户目录
$ mkdir /home/vsftpd/izqy2
创建用户,密码并重载配置
$ echo -e "izqy2\n123456" >> /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
网友评论