1、部署环境
普通物理机一台(6G内存,500G硬盘),windows server 2016操作系统。
安装vmware workstation pro14,新建centos 7虚拟机。
2、在centos 7虚拟机中安装docker、创建容器、在容器中安装pure-ftp
2.1、禁用SELINUX
#vi /etc/selinux/config
SELINUX有以下三种设置,设置为第一种
SELINUX=disabled
SELINUX=enforcing
SELINUX=permissive
2.2、安装docker
#yum install docker
#systemctl start docker.service
#systemctl enable docker.service
2.3、下载镜像到本地
#docker images
查看本机镜像
#docker pull centos
下载镜像
#docker images
查看本机镜像
2.4、创建容器
#docker run -v /home/ftpdata:/containerftpdata -p 21:21 -p 48000-50000:48000-50000 -itd --privileged=true --name centos_ftp centos /usr/sbin/init
创建容器
#docker run -v /home/ftpdata:/containerftpdata --net=host -itd --privileged=true --name centos_ftp_host centos /usr/sbin/init
指定host网络模式创建容器,无需端口映射,使用主机的网络堆栈,这种模式可以修改优化容器内核参数
#docker exec -it centos_ftp /bin/bash
进入容器
修改容器时间
# mv localtime localtime_bak
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.5、在容器中安装pure-ftp
第一步:安装pure-ftp
默认的 yum 源没有提供 pure-ftpd,需要先安装 epel 扩展源:
# yum install epel-release
然后使用 yum 命令安装Pure-ftpd:
# yum install pure-ftpd
第二步:修改配置文件
# vi /etc/pure-ftpd/pure-ftpd.conf
去掉#注释,指定路径,PureDB用户数据库文件
PureDB /etc/pure-ftpd/pureftpd.pdb
开启日志 /var/log/pureftpd.log
VerboseLog yes
拒绝匿名用户登录
NoAnonymous yes
使用被动模式,并限制端口范围
PassivePortRange 48000 50000
删掉注释,并将192.168.0.1修改为当前服务器的公网IP
ForcePassiveIP 替换为当前服务器的公网IP
第三步:创建账户,配置权限
添加ftp用户组
# groupadd ftpgroup
#useradd -g ftpgroup -s /sbin/nologin -M ftpuser
创建目录并配置目录权限
# mkdir /containerftpdata/替换为创建的目录 -p
# chown ftpuser:ftpgroup /containerftpdata/替换为创建的目录 -R
创建虚拟账户
# pure-pw useradd 替换为虚拟账户 -u ftpuser -d /containerftpdata/替换为创建的目录
随后会提示输入这个虚拟用户名的登录密码
#pure-pw mkdb
第四步:启动pure-ftpd
# systemctl enable pure-ftpd.service
# systemctl start pure-ftpd.service
2.6、安装net-tools
#yum install net-tools
#netstat -lntp
查看 21 端口是否开启
#ps aux | grep ftp
查看 ftp 进程
3、centos 7虚拟机防火墙设置和修改优化容器内核参数
#firewall-cmd --permanent --add-port=21/tcp
#firewall-cmd --permanent --add-port=48000-50000/tcp
#firewall-cmd --reload
#firewall-cmd --list-all
#yum install net-tools
#netstat -lntp
如果指定host网络模式创建的容器,可在centos 7虚拟机中调优内核参数,容器的内核参数也随之生效
#vi /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 30
#每30s发送一次keepalive数据包
net.ipv4.tcp_keepalive_intvl = 10
#确定keepalive探针在第一次保持活动探测后每10s发送一次
net.ipv4.tcp_keepalive_probes = 6
#超时前的探测次数
net.ipv4.tcp_fin_timeout = 300
#系统默认的超时时间
#sysctl -p
#reboot
4、路由器端口映射
21端口和48000-50000端口