第一次使用docker安装 vsftp 用户登录问题搞了很久记录一下
一 .使用centos8的基础镜像创建容器 ,安装vsftp
个人偏向java,简单的在centos8的基础上安装了jdk
dockerhub镜像
docker pull spikebob/centos8:v1.0.1
二.安装vsftp
yum -y install vsftpd
三.添加用户vsftp 修改密码(输入两次密码 密码太简单会有警告 不用管)
useradd vsftp
passwd vsftp
安装完成后 在 /etc/vsftpd 目录下有三个配置文件
ftpusers 和 user_list 类似于 黑名单和白名单 它们两个名单可以由vsftp.conf中的字段控制 进行黑白名单互换(黑名单变成白名单,白名单变成黑名单)
由于懒的原因只解释几个重要的字段 其他的度娘可以搜到
四.修改配置文件
打开vsftpd.conf
anonymous_enable=YES // 是否允许匿名用户登录 YES 允许
userlist_enable=YES // 为YES时 ftpusers中用户不能访问
userlist_deny=NO // 默认值为 YES (为YES时 user_list 中的用户不能访问)
local_root=/home/vsftp //用户访问时默认打开的目录
anon_root=/home/vsftp //匿名用户访问时默认打开的目录
listen=YES //监听ipv4
listen_ipv6=NO //监听ipv6
修改后完整的配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
local_root=/home/vsftp
anon_root=/home/vsftp
五.重新启动容器和vsftp
完成配置后退出容器 将容器提交为镜像(docker commit -a "作者" -m "描述" vsftp(容器id或名称) XXX/vsftp:v1.0.0 (完整的标签))
-e FTP_USER=vsftp 设置用户vsftp
-e FTP_PASS=vsftppwd 设置用户密码为vsftppwd
嫌麻烦直接从dockerhub拉已经完成的镜像 (第二条命令,记得改密码和目录)
docker run -itd --privileged -e FTP_USER=userName-e FTP_PASS=passwd --name="容器名称" -v "服务器想要于docker容器绑定的目录":"docker容器的目录 注:一定要在容器中存在" -p 20:20 -p 21:21 -p 21100-21110:21100-21110 "容器id或完整标签" /usr/sbin/init
docker run -itd --privileged -e FTP_USER=vsftp -e FTP_PASS=vsftppwd --name=vsftp -v /root/data:/home/vsftp -p 20:20 -p 21:21 -p 21100-21110:21100-21110 spikebob/vsftp:v1.0.2 /usr/sbin/init
docker exec -it vsftp /bin/bash 进入容器
systemctl start vsftpd 启动vsftp
六.使用xftp测试
使用xftp测试 在属性中把被动模式取消
协议切换为ftp 主机使用公网ip
完成连接
注意vsftp默认只能在 vsftpd.conf 配置文件中设置的目录内上传和创建 其他目录只能下载(上传和创建报错 553)
vsftp简单的安装使用就完成了