本篇总结了在win10下面使用Docker来部署vsftpd服务
最近写项目用到了FTP,也已经习惯了使用Docker进行容器化部署,这样可以不污染宿主的环境,所以在网上查了相关资料
而网上大部分使用的都是在Linux服务器上使用Docker部署,所以自己摸索了一下,稍作修改在win10下也完成了FTP的部署
拉取镜像
执行命令拉取vsftpd镜像
docker pull fauria/vsftpd
启动容器
通过命令创建容器并启动:
docker run -d -v f:\ftp_file:/home/vsftpd
-p 20:20 -p 21:21 -p 21100-21110:21100-21110
-e FTP_USER=zk
-e FTP_PASS=zk137818
-e PASV_ADDRESS=192.168.1.105
-e PASV_MIN_PORT=21100
-e PASV_MAX_PORT=21110
--name vsftpd --restart=always fauria/vsftpd
说明:
在上述命令中:
- -d: 后台运行容器,并返回容器ID;
- -v: 建立
宿主机文件目录:容器内文件目录
映射- -p: 多个端口映射
- -e: 对容器进行配置
- FTP_USER: FTP服务器用户名
- FTP_PASS: FTP服务器密码
- PASV_ADDRESS: FTP服务器地址(通常是本地IP)
- PASV_MIN_PORT: 被动模式最小端口号
- PASV_MAX_PORT: 被动模式下最大端口号
- –name xxx: 启动后容器名称
- –restart=always: 容器挂了之后会自动重启
- fauria/vsftpd: 构建容器时使用的镜像名称
使用上述命令时, 根据自己的实际需求来替换命令
一些注意事项
① 关于-v文件目录映射问题
- 容器目录不可以为相对路径
- 宿主机目录如果不存在,则会自动生成
② 当创建容器时, win10可能会提示磁盘访问权限, 允许即可
访问服务
可以使用FileZilla直接访问, 如下图:
当然也可以使用浏览器直接访问: url为:
ftp://username:password@hostname:port
在本例中为: ftp://zk:zk137818@192.168.1.105:21
如下图:
增加一个新用户
① 首先执行如下命令进入到容器
docker exec -i -t vsftpd bash
② 创建新用户的文件夹
mkdir /home/vsftpd/test
说明: 其中test为新用户的用户名
③ 编辑用户配置文件
vi /etc/vsftpd/virtual_users.txt
# 文件内容
zk
zk137818
test # 新用户用户名
zk137818 # 新用户密码
④ 保存退出后执行如下命令,把登录的验证信息写入数据库
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
⑤ 最后退出容器,并重启容器可以使用新用户连接 FTP 服务了
exit
docker restart vsftpd