
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
在主机上安装ProFTPD服务器的简单方式。此FTP服务器支持被动模式(可能也支持主动模式,但不确定)。
bashdocker run -d --net host \ -e FTP_LIST="user1:pass1;user2:pass2" \ -e MASQUERADE_ADDRESS=1.2.3.4 \ -v /用户1的FTP目录路径:/home/user1 \ -v /用户2的FTP目录路径:/home/user2 \ kibatic/proftpd
默认被动端口范围为50000-50100。
MASQUERADE_ADDRESS应设置为FTP服务器的外部地址。
定义用户和密码的方式要求用户名和密码中不得包含分号(;)或冒号(:)。
(确实不够优雅,但在2018年还在用FTP本身就不太优雅)
bashdocker run -d --net host \ -e FTP_LIST="user1:pass1;user2:pass2" \ -e USERADD_OPTIONS="-o --gid 33 --uid 33" \ -e PASSIVE_MIN_PORT=50000 \ -e PASSIVE_MAX_PORT=50100 \ -e MASQUERADE_ADDRESS=1.2.3.4 \ -v /用户1的FTP目录路径:/home/user1 \ -v /用户2的FTP目录路径:/home/user2 \ kibatic/proftpd
USERADD_OPTIONS为可选参数,用于传递给useradd命令的参数(例如指定创建的用户使用www-data的UID 33和GID 33)。
通过该参数可配置不同访问权限,确保用户在主机上创建的文件和目录使用正确的用户身份。
可使用如下docker-compose配置(如果不想将端口暴露到外部机器,可使用#注释端口):
yamlversion: '3.7' services: proftpd: image: kibatic/proftpd network_mode: "host" restart: unless-stopped environment: FTP_LIST: "myusername:mypassword" USERADD_OPTIONS: "-o --gid 33 --uid 33" # 可选:默认值为50000和50100 PASSIVE_MIN_PORT: 50000 PASSIVE_MAX_PORT: 50100 # 可选:默认未定义 MASQUERADE_ADDRESS: 1.2.3.4 volumes: - "/主机目录路径:/home/myusername" ports: - 21:21 - 50000-50100:50000-50100
主动模式下可使用以下防火墙规则:
bashiptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT iptables -A OUTPUT -p tcp --dport 50000:50100 -j ACCEPT
如需测试此Dockerfile,可使用tester目录:
bashcd tester docker-compose build --pull docker-compose up
若需启用FTPS(基于TLS的FTP),需准备证书、私钥及启用FTPS的配置文件。
在Linux上创建自签名证书和私钥,可使用以下命令:
bashopenssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem
假设证书名为cert.pem,私钥名为key.pem,可使用以下配置文件:
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/ftpd-tls.log TLSProtocol TLSv1.2 TLSv1.3 # 是否要求客户端使用FTPS TLSRequired on # 服务器RSA证书 TLSRSACertificateFile /etc/proftpd/cert.pem TLSRSACertificateKeyFile /etc/proftpd/key.pem # 服务器EC证书(可选) #TLSECCertificateFile /etc/ftpd/server-ec.cert.pem #TLSECCertificateKeyFile /etc/ftpd/server-ec.key.pem # 服务器信任的CA(可选) #TLSCACertificateFile /etc/ftpd/root.cert.pem # 是否验证客户端证书 TLSVerifyClient off # 允许SSL/TLS重协商(客户端请求时),但不强制 TLSRenegotiate none </IfModule>
假设配置文件名为proftpd-tls.conf,证书文件为cert.pem和key.pem,需将这3个文件挂载到容器(建议以只读方式挂载,即添加:ro)。
docker run命令示例(在镜像名称前添加):
bashdocker run ... \ -v /配置目录路径/proftpd-tls.conf:/etc/proftpd/conf.d/proftpd-tls.conf:ro \ -v /证书目录路径/key.pem:/etc/proftpd/key.pem:ro \ -v /证书目录路径/cert.pem:/etc/proftpd/cert.pem:ro \ kibatic/proftpd
docker-compose示例(添加到volumes列表):
yamlvolumes: - ... - /配置目录路径/proftpd-tls.conf:/etc/proftpd/conf.d/proftpd-tls.conf:ro - /证书目录路径/key.pem:/etc/proftpd/key.pem:ro - /证书目录路径/cert.pem:/etc/proftpd/cert.pem:ro
受Julian Haupt的hauptmedia/proftpd镜像启发。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务