在 Docker 中部署 FTP 服務(wù)器
在 Docker 中部署 FTP 服務(wù)器可以通過以下步驟完成,這里以廣泛使用的 pure-ftpd 鏡像為例,提供完整部署方案:
?? 基礎(chǔ)部署(單用戶模式)
# 創(chuàng)建數(shù)據(jù)目錄
mkdir -p ~/ftp/data ~/ftp/config
# 運行容器(單用戶模式)
docker run -d \
--name ftp_server \
-p 21:21 \
-p 30000-30009:30000-30009 \
-e FTP_USER_NAME=myuser \
-e FTP_USER_PASS=MySecurePassword! \
-e FTP_USER_HOME=/home/myuser \
-v ~/ftp/data:/home/myuser \
-v ~/ftp/config:/etc/pure-ftpd/passwd \
stilliard/pure-ftpd:hardened
?? 多用戶高級配置(docker-compose.yml)
version: '3.8'
services:
ftp:
image: stilliard/pure-ftpd:hardened
container_name: pure-ftpd
ports:
- "21:21"
- "30000-30009:30000-30009" # PASV端口范圍
volumes:
- ./ftp_data:/ftp
- ./config:/etc/pure-ftpd/passwd
environment:
PUBLICHOST: your.domain.com # 被動模式公網(wǎng)IP/域名
FTP_PASSIVE_PORTS: "30000:30009"
command: /run.sh -c 30 -C 10 -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -j -R -P $PUBLICHOST
?? 創(chuàng)建多用戶賬戶
# 進入容器
docker exec -it pure-ftpd bash
# 創(chuàng)建用戶組
groupadd ftpgroup
# 添加用戶 (格式: useradd -g ftpgroup -d /ftp/{用戶名} {用戶名})
useradd -g ftpgroup -d /ftp/user1 user1
useradd -g ftpgroup -d /ftp/user2 user2
# 設(shè)置密碼
pure-pw useradd user1 -u ftpuser -g ftpgroup -d /ftp/user1
pure-pw useradd user2 -u ftpuser -g ftpgroup -d /ftp/user2
# 更新數(shù)據(jù)庫
pure-pw mkdb
exit
?? 防火墻配置
# 開放端口
sudo ufw allow 21/tcp
sudo ufw allow 30000:30009/tcp
??? 連接測試
使用 FileZilla 客戶端連接:
地址: 服務(wù)器IP
端口: 21
協(xié)議: FTP
加密: 普通FTP(不加密)
用戶: 創(chuàng)建的用戶名
密碼: 對應(yīng)用戶密碼
?? TLS 加密配置(可選)
# 在docker-compose.yml中添加
environment:
ADDED_FLAGS: "--tls=1"
volumes:
- ./ssl:/etc/ssl/private
生成證書:
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout ~/ftp/ssl/pure-ftpd.pem \
-out ~/ftp/ssl/pure-ftpd.pem \
-subj "/CN=your.domain.com"
?? 安全注意事項
- 避免使用弱密碼:密碼復(fù)雜度應(yīng)大于12位
- 限制用戶權(quán)限:
- 啟用日志審計:
?? 管理命令
# 添加新用戶
docker exec pure-ftpd pure-pw useradd newuser -u ftpuser -d /ftp/newuser
# 重置密碼
docker exec pure-ftpd pure-pw passwd user1
# 查看在線用戶
docker exec pure-ftpd pure-ftpwho
?? 替代方案
|
鏡像名稱 |
特點 |
適用場景 |
|
|
輕量級(僅7MB) |
資源受限環(huán)境 |
|
|
基于Alpine(5MB) |
超輕量部署 |
|
|
支持Web管理界面 |
需要可視化操作 |
重要提示:FTP協(xié)議本身不加密傳輸數(shù)據(jù),敏感環(huán)境應(yīng):
1. 啟用FTPS(FTP over SSL)
2. 或改用SFTP(SSH File Transfer Protocol)
3. 限制IP訪問:docker run --add-host=allowed.ip:192.168.1.100

浙公網(wǎng)安備 33010602011771號