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端口