最近做项目需要用到ftp服务器,将生成的文件放到上面让甲方访问,大哥跟我说要在liunx下搭建一个先测试使用。
1.拉取镜像
docker pull fauria/vsftpd (自己敲,复制可能有问题)
2.启动容器
默认端口:docker run -d -v /var/ftp:/home/vsftpd -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=你的登录账号 -e FTP_PASS=你的登录密码 -e PASV_ADDRESS=你的服务器ip -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name 随便写一个为你的容器名字 --restart=always fauria/vsftpd
自定义端口:docker run -d -v /var/ftp:/home/vsftpd -p 9001:21 -p 9002:9002 -e FTP_USER=你的登录账号 -e FTP_PASS=你的登录密码 -e PASV_ADDRESS=你的服务器ip -e PASV_MIN_PORT=9002-e PASV_MAX_PORT=9002--name 随便写一个为你的容器名字 --restart=always fauria/vsftpd
挂载地址:(冒号前面是宿主机地址,后面是docker容器里面的地址)
3.启动完了就可以用连接工具WinSCP连接了
主机名:你的服务器ip
端口:9001(如果默认的就是21)
用户名:你的登录账号
密码:你的登录密码。
当然也可以直接在浏览器里输入:ftp://你的登录账号:你的登录密码@你的服务器ip。
4.添加虚拟用户(客户需求:要去不同的账号管理不同的文件)
1.先要进入到docker容器中
docker exec -i -t ftpserver bash
2.创建新用户的文件夹(用户名就是文件夹名称)
mkdir /home/vsftpd/ghc
3.编辑用户配置文件
vi /etc/vsftpd/virtual_users.txt
4.添加新用户的用户名和密码
vi 进入后,如果你启动时指定了一个用户,那么就会显示这个用户的账号密码,在他后面回车添加上你要加价的账号密码我这里用的是:ghc 2021ghc 账号和密码中间要有个换行
5.保存退出编辑模式,把登录的验证信息写入数据库。
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
6.退出容器,重启ftp容器就可以了
docker restart ftpserver
可能用到命令:
- 停止启动:docker stop 容器id
- 关闭容器:docker rm 容器id
- 删除镜像:docker rmi imageId
踩坑记录:我们模拟测试的是在docker下装的ftp,实际项目是发放客户的是在linux上装的ftp,导致出现了下面的这个问题
如果安装完以后使用ftp连接工具可以拖拽文件和文件夹,但是使用代码就是不能上传文件,也没有任何异常,就是上传不成功,那么可以去试试将ftpClient的主被动模式改为被动模式,我这里用的是hutool的ftp连接工具原理一样的。hutool的这个连接工具上面说默认是被动模式导致坑了我好长时间,直到后来手动改为了被动模式才可以上传。

本文详细指导如何在Linux下利用Docker搭建FTP服务器,包括拉取镜像、自定义端口、添加虚拟用户,以及处理WinSCP连接和上传问题,特别提到了从Docker迁移到Linux环境时遇到的坑和解决方案。
1万+

被折叠的 条评论
为什么被折叠?



