Docker:一行命令搭建带容量限制的FTP服务器

目标

使用 Docker 快速搭建一个 vsftpd 服务,并将其存储目录 /root/ftp/ 的总容量精确限制为 500MB。

核心思路

不直接使用主机目录,而是在主机上创建一个 500MB 大小的文件作为“虚拟磁盘”。将此文件格式化并挂载到 /root/ftp/ 目录,然后将这个大小已经固定的目录供给 Docker 容器使用。

环境准备
  • 已安装 Docker 的 Linux 服务器
  • Root 或 Sudo 权限

第一步:创建并挂载主机的受限目录

1. 创建 500MB 的虚拟磁盘文件

truncate -s 500M /root/ftp-storage.img

提示:500M 可根据需求修改为 2G、10G 等。

2. 格式化文件为 ext4 文件系统

mkfs.ext4 /root/ftp-storage.img

遇到 (y,N) 提示时,输入 y 并回车。

3. 创建挂载点目录

mkdir -p /root/ftp/

4. 挂载虚拟磁盘

mount -o loop /root/ftp-storage.img /root/ftp/

5. 验证目录大小

df -h /root/ftp/

输出应显示该目录总大小为 500MB 左右。

6. 设置开机自动挂载

echo '/root/ftp-storage.img /root/ftp/ ext4 loop 0 0' >> /etc/fstab

第二步:启动 Docker FTP 容器

1. 拉取镜像 (可选)

docker pull fauria/vsftpd

2. 运行容器
请将 YOUR_PUBLIC_IP 替换为您服务器的真实公网 IP 地址。

docker run -d --name my-ftp-server \
  -p 21:21 \
  -p 30000-30009:30000-30009 \
  -v /root/ftp/:/home/vsftpd/lei \
  -e FTP_USER=lei \
  -e FTP_PASS=10086 \
  -e PASV_MIN_PORT=30000 \
  -e PASV_MAX_PORT=30009 \
  -e PASV_ADDRESS=YOUR_PUBLIC_IP \
  --restart always \
  fauria/vsftpd

第三步:配置防火墙

1. 开放端口

# 开放FTP命令端口 21
firewall-cmd --permanent --add-port=21/tcp

# 开放被动模式数据端口范围
firewall-cmd --permanent --add-port=30000-30009/tcp

# 重新加载防火墙规则
firewall-cmd --reload

云服务器用户注意:还必须在云服务商控制台的安全组中,添加入站规则,放行 21 和 30000-30009 这两个TCP端口。


第四步:连接与测试

使用任何 FTP 客户端(如 FileZilla、Windows 文件资源管理器)进行连接。

  • 主机: YOUR_PUBLIC_IP
  • 用户名: lei
  • 密码: 10086
  • 端口: 21
  • 模式: 被动 (Passive) 模式

验证:尝试上传一个大于 500MB 的文件,上传将在达到容量上限时失败,证明配置成功。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐