通过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