目录映射

在您提供的 Docker 命令中,目录映射是通过 -v 参数指定的,其格式为 宿主机目录:容器内目录。具体解析如下:

-v 主机目录(本地目录/data/ftp):虚拟目录(容器目录 /home/vsftpd )

-v /data/ftp:/home/vsftpd

image

  1. 数据持久化:所有写入容器内 /home/vsftpd 的文件,实际会存储在宿主机的 /data/ftp 目录中
  2. 目录共享:容器重启后,/home/vsftpd 的内容会从 /data/ftp 恢复
  3. 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 , 要不然需要权限

posted @ 2025-11-05 16:27  麦麦提敏  阅读(6)  评论(0)    收藏  举报