通过docker创建容器命令生成ftp用户,在连接时无法获取ftp目录;docker-compose脚本生成ftp容器同样无法获取目录。通过下面办法可实现docker容器中的ftp正常连接和访问。

1、拉取镜像

docker pull fauria/vsftpd

2、生成/启动ftp容器(不创建ftp用户)

docker run -d -v /etc/localtime:/etc/localtime:ro -v /home/dr/data/ftp:/home/vsftpd  -p 20:20 -p 21:21 -p  21100-21110:21100-21110 -e PASV_ADDRESS=*.*.*.* -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e LOCAL_UMASK=022 -e FILE_OPEN_MODE=0755 --name xj_ftp --restart=always fauria/vsftpd
# -e LOCAL_UMASK=022 -e FILE_OPEN_MODE=0755解决ftp上传文件权限不够的问题

-e PASV_ADDRESS配置为宿主机公网IP地址

3、创建容器用户

  • 进入容器
docker exec -it -u root xj_ftp bash
  • 手动创建一个用户目录,目录名即用户名
mkdir /home/vsftpd/ftpuser
  • 编辑用户和密码
vi /etc/vsftpd/virtual_users.txt

在这里插入图片描述
备注: 用户名和之前创建的目录名一致

  • 用户信息写入到数据库
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
  • 返回宿主机重启容器
docker restart xj_ftp
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐