通过docker创建容器命令生成ftp用户,在连接时无法获取ftp目录;docker-compose脚本生成ftp容器同样无法获取目录。通过下面办法可实现docker容器中的ftp正常连接和访问。
1、拉取镜像
docker pull fauria/vsftpd
2、生成/启动ftp容器(不创建ftp用户)
docker run \
-d \
-v /home/vsftpd:/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 \
--name xj_ftp \
--restart=always \
fauria/vsftpd
-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