
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
源码:https://github.com/LearningToPi/vsftpd_docker
Docker Hub:https://hub.docker.com/r/learningtopi/vsftpd
本容器镜像创建一个运行在容器中的vsftpd FTP服务器,支持IPv4和IPv6监听,可运行在主动或被动模式下。通过容器环境变量可控制服务参数,通过挂载"users.txt"文件可自动创建用户账户。
| 变量名 | 可选值 | 默认值 | 描述 |
|---|---|---|---|
| USERS_FILE | 镜像内路径 | /users.txt | 启动时用于创建用户的文件路径 |
| PASV_ENABLED | YES|NO | YES | 启用FTP被动模式(需发布被动端口范围) |
| ACTIVE_ENABLED | YES|NO | YES | 启用FTP主动模式(需发布20端口) |
| PASV_MIN_PORT | >1024的整数 | *** | 被动通信起始端口 |
| PASV_MAX_PORT | >1024的整数 | *** | 被动通信结束端口 |
| IPV6 | YES|NO | YES | 启用IPv6监听 |
用户文件为冒号(:)分隔的文本文件,每行包含3个字段:uid、用户名、密码。
示例:
1001:user1:pass1 1002:user2:pass2 1003:user3:pass3
Docker Run命令
bashdocker run --name vsftpd -d \ -v /data/ftp_users:/ftp \ -v /data/users.txt:/users.txt:Z \ -e ACTIVE_ENABLED=NO \ -p 21:21/tcp \ -p 10090-10100:10090-10100/tcp \ -p [::]:21:21/tcp \ -p [::]:10090-10100:10090-10100/tcp \ learningtopi/vsftpd:latest
Docker Compose配置
yamlversion: '3' services: vsftpd: image: learningtopi/vsftpd:latest container_name: vsftpd volumes: - ./ftp_data:/ftp - ./users.txt:/users.txt:Z environment: - ACTIVE_ENABLED=NO - PASV_MIN_PORT=10090 - PASV_MAX_PORT=10100 ports: - "21:21/tcp" - "10090-10100:10090-10100/tcp" - "[::]:21:21/tcp" - "[::]:10090-10100:10090-10100/tcp" restart: always
:Z标签被动端口未转发:
错误提示:ftp: Can't connect to ...: Permission denied
解决:添加对应端口转发规则(如***-***)
IPv6连接失败:
错误提示:Can't connect to [IPv6地址]:21
解决:创建支持IPv6的Docker网络并将容器加入该网络
文件访问权限问题:
错误提示:Permission denied
解决:检查外部路径的所有权和SELinux标签设置
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 learningtopi/vsftpd 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: