之前直接在 centos 上面搭建 vsftpd,特别费劲,那么多配置的地方,以及繁琐的操作。就想着在 docker 上面去试试,毕竟有这么简单的方式去搭建,干不用。
搭建过程
第一步:准备工作
创建一个文件夹,作为我们上传文件的目录地址;创建一个用户(不能登录系统),作为访问文件服务器使用。
// 创建 ftp文件目录
cd /home
mkdir ftp
// 创建一个组,用于存放ftp 用户
groupadd ftpuser
// 创建ftp用户,并加入ftpgroups组
useradd -d /home/ftp -g ftpuser ftptest
// 设置密码(123456)
passwd ftptest
// 不允许登录
usermod -s /sbin/nologin ftptest
第二步:拉取镜像
// 首先搜索镜像包
docker search vsftpd
// 拉取镜像
docker pull fauria/vsftpd
第三步:启动容器
PASV_ADDRESS 这个参数是需要设置成为自己的机器上面的
docker run -d -v /home/ftp:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=ftptest -e FTP_PASS=123456 \
-e PASV_ADDRESS=192.168.62.129 \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
相关参数说明:
- /home/ftp:/home/vsftpd:映射 docker 容器 ftp 文件根目录(冒号前面是宿主机的目录)
- -p:映射 docker 端口(冒号前面是宿主机的端口)
- -e FTP_USER=test -e FTP_PASS=test :设置默认的用户名密码(都为 test)
- PASV_ADDRESS:宿主机 ip,当需要使用被动模式时必须设置。
- PASV_MIN_PORT~ PASV_MAX_PORT:给客服端提供下载服务随机端口号范围,默认 21100-21110,与前面的 docker 端口映射设置成一样。
测试
// 切换路径
cd /home/ftp/ftptest
// 创建文件
touch 1.txt
浏览器访问:
ftp://ftptest:123456@192.168.62.129:21
附
// 如果防火墙没开,执行下面命令
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload