ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker 部署 ftp 服务

2022-02-08 16:05:37  阅读:228  来源: 互联网

标签:容器 ftp 21 vsftpd 部署 端口 -- docker


ftp分为主动模式(PORT)和被动模式(PASV)。主动模式使用20和21端口,其中20为数据端口,21为控制端口。被动模式使用21控制端口和一个其他随机端口作数据端口。主动模式因为防火墙的原因,经常会断掉,因此被动模式是通常情况下的优选。当宿主机端口紧张的时候,我们只需要(至少需要)两个端口作端口映射,即一个21控制端口;一个其他非公认数据端口。

前提:有docke环境后,可以开始搭建。

搜索一下别人封装好的 vsftpd (开源的ftp服务器)镜像。

# docker search vsftpd

然后根据需要选择镜像,一般都拉取使用量最高的镜像,这里是 fauria/vsftpd。

# docker pull fauria/vsftpd

等同于把安装包安装成可运行的软件,我们把拉取的 vsftp 镜像创建一个容器实例。在创建时需要指定一些运行参数。

# docker run -d \
-v /home/webapps:/home/vsftpd \
-v /var/log/vsftpd/:/var/log/vsftpd/ \
-p 20:20 -p 21:21 -p 20000:20000 \
-e FTP_USER=test \
-e FTP_PASS=test \
-e PASV_MIN_PORT=20000 \
-e PASV_MAX_PORT=20000 \
-e PASV_ADDRESS=宿主机ip地址 \
-e LOG_STDOUT=1 \
--name vsftpd --restart=always \
fauria/vsftpd

下面来解释一下:

1. -v /home/webapps:/home/vsftpd
  这句话是将宿主机的 /home/webapps 文件夹和容器的 /home/vsftpd 文件夹作一个映射,之后容器中上传的东西都可以在 /home/webapps 中看到。
2. -p 20:20 -p 21:21 -p 21100-21110:21100-21110
	这句话就是原理中的端口映射了,冒号前是宿主机暴露的端口,冒号后是容器实例启动的端口。补充一点是,要映射21端口才能访问ftp,映射20端口才能查看到文件。、
3.  -e FTP_USR and FTP_PASS
  设置初始的ftp用户和密码
4. PASV_ADDRESS=X.X.X.X
  这里需要填写宿主机的ip地址
5. PASV_MIN_PORT和PASV_MAX_PORT都设置成一样的
  此时就仅开放一个端口作为数据端口了
  容器运行起来之后就可以登录测试了。

当然如果是公有云服务器,需要在安全组规则开启上面用到的端口

除了安全组规则开放之外,一般服务器还会设置得有 firewalld 规则,所以需要服务器开启端口。

# firewall-cmd --zone=public --add-port=20/tcp --permanent
# firewall-cmd --zone=public --add-port=21/tcp --permanent
# firewall-cmd --permanent --zone=public --add-port=20000/tcp
# firewall-cmd --reload 

在创建容器时我们设置了ftp的用户和密码,我们还可以增加用户,用户信息保存在 /etc/vsftpd/virtual_users.txt 这个文件中。当然这个文件在容器内部,我们需要进入容器。

先看一下容器是否正常启动

# docker ps

能够看到启动的容器,我们进入容器查看用户

# docker exec -it vsftpd /bin/bash
# vi /etc/vsftpd/virtual_users.txt

可以看到我们指定的用户和密码都在这个文件中,在文件中添加新用户的用户名和密码:奇数为帐号,奇数相邻的偶数为密码。创建容器时未设置用户名和密码,系统会默认创建用户和随机密码。

帐号和目录是对应的,每个账号对应一个用户目录,所以我们需要在/home下创建一个与账号同名的目录。

# mkdir /home/vsftpd/<username>

hash处理登录的验证信息并写入数据库

# /usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

用户密码都配置完之后,我们需要重启一下容器,让配置生效。退出容器

# exit
# docker restart vsftpd

然后我们可以访问验证了

linux 访问

# yum install -y ftp     
# ftp <ip>
输入用户名
输入密码
登录成功
ftp> ls      查看文件


windows 访问

1、在浏览器中访问:ftp://,输入用户名,密码

更多可参照:https://www.jianshu.com/p/c84f6e6de002

标签:容器,ftp,21,vsftpd,部署,端口,--,docker
来源: https://www.cnblogs.com/cuckooyang/p/15871549.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有