【无标题】

一、准备工作

检查 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 映射即可复用数据。

相关推荐
喜欢你,还有大家11 小时前
Docker-仓库-镜像制作
运维·docker·容器
武子康13 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
计算机小手17 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
岚天start17 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
栗子~~17 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
半梦半醒*17 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨17 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes
DARLING Zero two♡17 小时前
云原生基石的试金石:基于 openEuler 部署 Docker 与 Nginx 的全景实录
nginx·docker·云原生
期待のcode21 小时前
Docker容器
java·docker·容器
R-G-B1 天前
【P7】docker镜像发布和部署
运维·docker·容器·docker镜像·docker镜像发布和部署·镜像发布和部署·docker镜像发布