【无标题】

一、准备工作

检查 Docker 环境

确保 Docker 已安装并运行:

bash

docker --version # 查看版本

systemctl status docker # 检查运行状态

清理旧容器(若有)

若之前安装过其他 FTP 容器,先卸载:

bash

停止并删除旧容器(替换为实际容器名)

docker stop ftp-with-webui && docker rm ftp-with-webui

(可选)删除旧镜像

docker rmi delfer/alpine-ftp-server

二、安装 Pure-FTPd

  1. 拉取官方镜像
    bash
    docker pull stilliard/pure-ftpd
  2. 启动容器(基础配置)
    bash
    docker run -d
    --name pure-ftpd
    -p 21:21
    -p 30000-30009:30000-30009
    -v /home/ftp_data:/home/ftpusers \ # 宿主机目录映射(数据持久化)
    -e "PUBLICHOST=服务器IP" \ # 替换为实际IP(如 192.168.1.100)
    -e "FTP_USER_NAME=myuser" \ # 初始FTP用户名
    -e "FTP_USER_PASS=mypassword" \ # 初始FTP密码
    -e "FTP_USER_HOME=/home/ftpusers/myuser" \ # 初始用户目录
    --restart=always
    stilliard/pure-ftpd
    参数说明:
    -p 21:21:FTP 控制端口
    -p 30000-30009:30000-30009:被动模式数据端口范围
    -v /home/ftp_data:/home/ftpusers:宿主机目录与容器内目录映射(文件实际存在宿主机)
    --restart=always:容器随 Docker 自动启动
    三、用户管理(核心操作)
    所有用户管理操作需在容器内执行,先进入容器:

bash

docker exec -it pure-ftpd sh

  1. 新增用户
    bash

格式:pure-pw useradd 用户名 -u ftpuser -d /home/ftpusers/用户目录 -m

pure-pw useradd newuser -u ftpuser -d /home/ftpusers/newuser -m

执行后按提示输入密码

-m:自动创建目录并更新用户数据库

  1. 修改用户密码

bash

格式:pure-pw passwd 用户名 -m

pure-pw passwd myuser -m # 按提示输入新密码

  1. 修改用户目录

bash

1. 先创建新目录(容器内)

mkdir -p /home/ftpusers/new_dir

2. 修改用户路径

格式:pure-pw usermod 用户名 -d /新路径 -m

pure-pw usermod myuser -d /home/ftpusers/new_dir -m

  1. 删除用户

bash

格式:pure-pw userdel 用户名 -m

pure-pw userdel olduser -m

  1. 查看所有用户

bash

pure-pw list

四、验证服务

检查容器状态

bash

docker ps | grep pure-ftpd # 状态应为 Up

测试 FTP 连接

命令行测试:

bash

ftp 服务器IP 21 # 输入用户名和密码登录

客户端工具(如 FileZilla):

主机填服务器 IP,端口 21,输入用户名 / 密码连接

五、常见问题

连接失败:无法解析主机名

客户端直接用服务器 IP 连接,或在客户端 hosts 文件中绑定 IP 主机名。

被动模式无法传文件

确保宿主机防火墙开放 30000-30009 端口:

bash

ufw allow 30000:30009/tcp # 若使用 ufw 防火墙

文件权限问题

无需手动修改权限,pure-pw 会自动配置目录权限(属于 ftpuser 用户)。

六、数据持久化说明

所有 FTP 文件实际存储在宿主机的 /home/ftp_data 目录下,即使删除容器,文件也不会丢失。重新创建容器时保持 -v /home/ftp_data:/home/ftpusers 映射即可复用数据。

相关推荐
muyun280015 小时前
Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器
elasticsearch·docker·容器
傻傻虎虎20 小时前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
2401_897930061 天前
使用Docker轻松部署Neo4j图数据库
数据库·docker·neo4j
LeeZhao@1 天前
【AI推理部署】Docker篇04—Docker自动构建镜像
人工智能·docker·容器
程思扬1 天前
利用JSONCrack与cpolar提升数据可视化及跨团队协作效率
网络·人工智能·经验分享·docker·信息可视化·容器·架构
落日漫游1 天前
dockercompose和k8s区别
docker·kubernetes
lllsure1 天前
【Docker】存储卷
运维·docker·容器
纤瘦的鲸鱼1 天前
Docker 从入门到实践:容器化技术核心指南
java·docker·容器
邂逅星河浪漫1 天前
【Docker+Nginx+Ollama】前后端分离式项目部署(传统打包方式)
java·nginx·docker·部署
咖啡Beans2 天前
Docker安装ELK(Elasticsearch + Logstash + Kibana)
后端·elasticsearch·docker