
Docker Pure-ftpd Server是一个基于Debian系统构建的Pure-ftpd服务器镜像,提供轻量级、安全的FTP服务。该镜像支持虚拟用户管理、TLS加密传输、被动模式(PASV)配置、数据持久化及自定义服务器参数,适用于个人或企业快速部署可靠的文件传输服务。
bashdocker pull stilliard/pure-ftpd
若出现权限错误,可能需要将用户添加到docker组或使用
sudo执行命令
bashdocker run -d --name ftpd_server \ -p 21:21 \ -p 30000-30009:30000-30009 \ -e "PUBLICHOST=localhost" \ stilliard/pure-ftpd
通过环境变量创建用户:
bashdocker run -d --name ftpd_server \ -p 21:21 \ -p 30000-30009:30000-30009 \ -e "PUBLICHOST=localhost" \ -e "FTP_USER_NAME=bob" \ -e "FTP_USER_PASS=12345" \ -e "FTP_USER_HOME=/home/bob" \ stilliard/pure-ftpd
可通过FTP_USER_UID和FTP_USER_GID指定用户ID和组ID:
bash-e "FTP_USER_UID=1000" -e "FTP_USER_GID=1000"
如需使用非默认被动端口(如***-***):
bashdocker run -d --name ftpd_server \ -p 21:21 \ -p 10000-10009:10000-10009 \ -e "PUBLICHOST=localhost" \ -e "FTP_PASSIVE_PORTS=10000:10009" \ --expose=10000-10009 \ stilliard/pure-ftpd
bashdocker exec -it ftpd_server /bin/bash
bashpure-pw useradd bob -f /etc/pure-ftpd/passwd/pureftpd.passwd -m -u ftpuser -d /home/ftpusers/bob
-m选项会自动创建用户目录并更新用户数据库,无需重启服务
bashpure-pw passwd bob -f /etc/pure-ftpd/passwd/pureftpd.passwd -m
从主机测试FTP连接:
bashftp -p localhost 21
基础配置(docker-compose.yml):
yamlversion: '3' services: ftpd_server: image: stilliard/pure-ftpd container_name: ftpd_server ports: - "21:21" - "30000-30009:30000-30009" environment: - PUBLICHOST=localhost - FTP_USER_NAME=bob - FTP_USER_PASS=12345 - FTP_USER_HOME=/home/bob volumes: - ftpdata:/home/ftpusers - ftppasswd:/etc/pure-ftpd/passwd restart: always volumes: ftpdata: ftppasswd:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
| PUBLICHOST | PASV模式使用的IP/主机名 | localhost |
| ADDED_FLAGS | 附加的pure-ftpd命令行参数 | 无 |
| FTP_USER_NAME | 自动创建的FTP用户名 | 无 |
| FTP_USER_PASS | 自动创建的FTP用户密码 | 无 |
| FTP_USER_HOME | 自动创建的FTP用户主目录 | 无 |
| FTP_USER_UID | 自动创建的FTP用户UID | 无 |
| FTP_USER_GID | 自动创建的FTP用户GID | 无 |
| FTP_PASSIVE_PORTS | 被动模式端口范围 | 30000:30009 |
| FTP_MAX_CLIENTS | 最大客户端连接数 | 5 |
| FTP_MAX_CONNECTIONS | 每IP最大连接数 | 5 |
| TLS_CN | TLS证书通用名称(自动生成证书时) | 无 |
| TLS_ORG | TLS证书组织名称(自动生成证书时) | 无 |
| TLS_C | TLS证书国家代码(自动生成证书时) | 无 |
| TLS_USE_DSAPRAM | 是否使用DSA参数加速证书生成 | false |
| 挂载路径 | 说明 |
|---|---|
| /home/ftpusers/ | FTP用户数据存储目录,建议持久化 |
| /etc/pure-ftpd/passwd | 用户数据库目录,包含pureftpd.passwd文件 |
| /etc/ssl/private/ | TLS证书目录,需包含pure-ftpd.pem文件 |
在容器内执行以下命令生成自签名证书:
bashmkdir -p /etc/ssl/private openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048 openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout \ /etc/ssl/private/pure-ftpd.pem \ -out /etc/ssl/private/pure-ftpd.pem chmod 600 /etc/ssl/private/*.pem
当ADDED_FLAGS包含--tls(如--tls=1或--tls=2)且/etc/ssl/private/pure-ftpd.pem不存在时,可通过设置以下环境变量自动生成自签名证书:
bash-e "ADDED_FLAGS=--tls=2" \ -e "TLS_CN=ftp.example.com" \ -e "TLS_ORG=MyOrg" \ -e "TLS_C=CN"
将Let's Encrypt的证书和密钥文件合并为pure-ftpd.pem:
bashcat /etc/letsencrypt/live/ftp.example.com/cert.pem /etc/letsencrypt/live/ftp.example.com/privkey.pem > /etc/ssl/private/pure-ftpd.pem
通过卷挂载该文件到容器:
bash-v /path/to/letsencrypt/pure-ftpd.pem:/etc/ssl/private/pure-ftpd.pem
bashdocker run -d --name ftpd_server \ -p 21:21 -p 30000-30009:30000-30009 \ -e "PUBLICHOST=localhost" \ -e "ADDED_FLAGS=-d -d" \ stilliard/pure-ftpd
查看日志:
bashdocker logs -f ftpd_server
bashdocker run -d --name ftpd_server \ -p 21:21 -p 30000-30009:30000-30009 \ -e "PUBLICHOST=localhost" \ -e "ADDED_FLAGS=-O w3c:/var/log/pure-ftpd/transfer.log" \ -v ftplogs:/var/log/pure-ftpd \ stilliard/pure-ftpd
| 标签 | 说明 |
|---|---|
| latest | 最新版本,基于Debian Trixie |
| trixie-latest | Debian Trixie上的最新pure-ftpd版本 |
| bookworm-latest | Debian Bookworm上的最新pure-ftpd版本 |
| bullseye-latest | Debian Bullseye上的最新pure-ftpd版本 |
| trixie-1.x.x / bookworm-1.x.x / bullseye-1.x.x | 特定Debian版本上的固定pure-ftpd版本 |
旧版本标签(不再更新):buster-1.0.47、stretch-latest、jessie-latest、wheezy-1.0.36
/usr/sbin/pure-ftpd # pure-ftpd可执行文件路径 -c 5 # 最大客户端数(同时5人) -C 5 # 每IP最大连接数(5个请求) -l puredb:/etc/pure-ftpd/pureftpd.pdb # 虚拟用户登录文件 -E # 禁用匿名用户 -j # 自动创建主目录(如不存在) -R # 禁止使用CHMOD命令 -P $PUBLICHOST # PASV支持的IP/主机名(来自PUBLICHOST环境变量) -p 30000:30009 # PASV端口范围(10个端口对应5个最大客户端) -tls 1 # 启用可选TLS支持
更多配置选项可参考:pure-ftpd手册
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务