Linux|--Docker|--FTP|--搭建FTP服务器

准备工作

[
"docker"
]

1.0.docker|--拉取ftp镜像

#docker拉取ftp镜像
docker pull fauria/vsftpd

1.1.docker|--运行ftp容器

sudo docker run -d -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -v /usr/local/nginx/html/LJ_ManageSystem.Web:/home/vsftpd/panlianxia/LJ_ManageSystem.Web -e FTP_USER=panlianxia -e FTP_PASS=plx1234 -e PASV_ADDRESS=X.X.X.X -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e LOCAL_UMASK=022 --name ftp --restart=always fauria/vsftpd
{
"-p 21:21":"映射端口 - 控制用",
"-p 20:20":"映射端口 - 数据传输用",
"-p 20:20":"映射路径 - (格式 → 宿主机的ftp目录:docker容器文件根目录)",
"-e FTP_USER=root -e FTP_PASS=123456":"环境变量 - 设置默认的用户名密码",
"-e PASV_ADDRESS=X.X.X.X":"环境变量 - 宿主机公网IP(注意不是本机IP地址)(当需要使用被动模式时必须设置)",
"-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110":"环境变量 - 给客服端提供下载服务随机端口号范围(默认 21100-21110)",
"-e LOCAL_UMASK=022":"环境变量 - 默认情况下vsftp上传之后文件的权限是600(-rw-------,导致不能访问html文件,所以我需要调整一下权限),目录权限是700",
"--name ftp ":"docker容器名称",
"--restart=always":"容器重启策略 - 容器退出时总是重启容器",
"fauria/vsftpd":"镜像名称"
}

容器运行注意事项
1.关于"LOCAL_UMASK"的传送门→

#尝试修改"/etc/vsftpd/vsftpd.conf">>"local_umask",
#但是重启容器之后,配置项没有起作用,所以最后直接修改的docker run的参数"-e LOCAL_UMASK=022"
sudo docker exec -it ftp bash
vi /etc/vsftpd/vsftpd.conf
umask是unix操作系统的概念 , umask决定目录和文件被创建时得到的初始权限
umask = 022 时 ,新建的目录权限是 755 ,文件的权限是 644
umask = 077 时 ,新建的目录权限是 700 ,文件的权限时 600
vsftpd的local_umask和anon_umask借鉴了它
默认情况下vsftp上传之后文件的权限是600 ,目录权限是700
想要修改上传之后文件的权限 ,有两种情况
如果使用vsftp的是本地用户
则要修改配置文件中的 local_umask 的值
如果使用vsftp的是虚拟用户
则要修改配置文件中的 anon_umask 的值
————————————————
版权声明:本文为CSDN博主「小大宇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yanluandai1985/article/details/119893412

2.关于路径映射"-v"和用户"test"路径的关系

"-v /usr/local/nginx/html/:/home/vsftpd/html -e FTP_USER=test -e FTP_PASS=123456"
如果容器命令是这么设置 , 那么情境是这样的
1.容器中(执行命令进入"docker exec -it ftp /bin/bash"),会为用户"test"在容器中的目录下"/home/vsftpd/"创建目录"test"
2.当你使用ftp客户端登录该ftp服务器的时候,上传的文件会在"/home/vsftpd/test"目录下,
而你映射的容器目录在"/home/vsftpd/html",所以不会上传至宿主机目录"/usr/local/nginx/html/"下.
3.总结来说:要先知道用户的目录结构,再去想一下映射目录(参数"-v")

2.0.云服务器配置|--安全组端口开放

必须在服务器的防火墙中开启20、21、22和21100/21110端口

3.0.FTP客户端(Windows系统)|--控制面板\程序\程序和功能\Internet Explorer Services\FTP服务器

刚开始提示错误:

Windows 无法访问此文件夹。请确保输入的文件名是正确的,并且你有权访问此文件夹。

详细信息:
无法与服务器建立连接

4.0.总结

1.过程中粗心把IP地址拼错了
2.默认情况下vsftp上传之后文件的权限是600(-rw-------,导致不能访问html文件,需要调整一下权限),最终修改了参数"LOCAL_UMASK=022"
3.映射路径"-v /usr/local/nginx/html/:/home/vsftpd/html -e FTP_USER=test -e FTP_PASS=123456",一开始不清除两者之间的关系
posted @ 2022-04-15 14:00  zh89233  阅读(350)  评论(0编辑  收藏  举报