目錄映射
在您提供的 Docker 命令中,目錄映射是通過 -v 參數指定的,其格式為 宿主機目錄:容器內目錄。具體解析如下:
-v 主機目錄(本地目錄/data/ftp):虛擬目錄(容器目錄 /home/vsftpd )
-v /data/ftp:/home/vsftpd

- 數據持久化:所有寫入容器內
/home/vsftpd的文件,實際會存儲在宿主機的/data/ftp目錄中 - 目錄共享:容器重啟后,
/home/vsftpd的內容會從/data/ftp恢復 - FTP 根目錄:當用戶登錄 FTP 時,默認進入的是容器內的
/home/vsftpd目錄
權限問題解決方案:
如果遇到權限問題(常見問題),請執行:
# 1. 確保宿主機目錄存在
sudo mkdir -p /data/ftp
# 2. 修改目錄所有權(fauria/vsftpd 容器使用 UID 1000 的用戶)
sudo chown -R 1000:1000 /data/ftp
# 3. 設置合理權限(避免使用 777)
sudo chmod -R 777 /data/ftp
完整命令說明:
docker run -d --name ftp_server \
-p 2121:21 \
-p 30000-30009:30000-30009 \
-e FTP_USER=mjadmin \
-e FTP_PASS=Aa123o098@ \
-e PASV_ADDRESS=47.107.229.10 \
-e PASV_MIN_PORT=30000 \
-e PASV_MAX_PORT=30099 \
-v /data/ftp:/home/vsftpd \
--restart=always \
fauria/vsftpd
----------- 到說明的形式
docker run -d --name ftp_server \
-p 2121:21 \ # 映射FTP控制端口
-p 30000-30009:30000-30099 \ # 映射被動模式端口范圍
-e FTP_USER=mjadmin \ # FTP用戶名
-e FTP_PASS=Aa123o098@ \ # FTP密碼
-e PASV_ADDRESS=47.107.229.10 \ # 服務器公網IP(必須正確設置)
-e PASV_MIN_PORT=30000 \ # 被動模式最小端口
-e PASV_MAX_PORT=30099 \ # 被動模式最大端口
-v /data/ftp:/home/vsftpd \ # ?? 關鍵目錄映射:宿主機:容器
--restart=always \ # 自動重啟策略
fauria/vsftpd # 使用的鏡像
#3 驗證目錄映射:
# 1. 在宿主機創建測試文件
echo "test" | sudo tee /data/ftp/test_host.txt
# 2. 進入容器查看
docker exec -it ftp_server ls -l /home/vsftpd
# 應能看到 test_host.txt 文件
# 3. 在容器內創建文件
docker exec -it ftp_server touch /home/vsftpd/test_container.txt
# 4. 在宿主機驗證
ls -l /data/ftp
# 應能看到 test_container.txt 文件
常見問題解決:
如果登錄后看不到文件:
1. 檢查目錄所有權:ls -ld /data/ftp 應為 drwxr-xr-x 1000 1000
2. 確認 PASV_ADDRESS 設置的是服務器公網 IP
3. 檢查防火墻是否開放 21 和 30000-30009 端口
4. 查看容器日志:docker logs ftpd
目錄映射
問題解決: 每次執行時候需要sudo , 要不然需要權限

浙公網安備 33010602011771號