在主机上安装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镜像启发。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429