获取vsftpd/ftp镜像
docker pull fauria/vsftpd
实例:
使用自定义用户帐户创建容器,映射数据目录并启用主动和被动模式:
docker run -d -v /root/ftp:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=myuser -e FTP_PASS=mypass \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
工作讲解:
该实例公开了端口20
和21
. 此外,映射了两个目录:/home/vsftpd
,其中包含用户主目录,以及/var/log/vsftpd
,用于存储日志。
参数讲解:
-d | 后台启动 |
-v | 映射路径。(宿主机路径:容器路径) |
-p | 映射端口。(需要开放的端口:容器默认开放端口) |
-e | 设置环境变量 |
--name | 指定容器名称 |
--restart=always | 重启或启动Docker时,容器将自动重启或启动 |
FTP_USER | 默认 FTP 帐户的用户名。如果FTP_USER在运行时没有通过环境变量指定,admin将默认使用 |
FTP_PASS | 如果您没有通过 为默认的 FTP 帐户指定密码,FTP_PASS则会自动生成一个 16 个字符的随机字符串。 |
PASV_ADDRESS | Docker 宿主机 IP / 主机名。(192.168.xx.xxx) |
PASV_MIN_PORT | 这将用作被动模式端口范围的下限。给客户提供的下载服务随机端口 |
PASV_MAX_PORT | 这将用作被动模式端口范围的上限。给客户提供的下载服务随机端口 |
共享目录 | 在宿主机映射的、/root/ftp/myuser/目录下。myuser是启动容器定义的账户,如果再添加新用户,则会出现新用户的共享目录。如果权限不足,想上传或下载,直接给用户myuser或别的已有用户给个 777权限就可以了。chmod 777 /root/ftp/myuser |
访问过程中需要开启或关闭的服务
#关闭防火墙
systemctl stop firewalld
#关闭SE
setenforce 0
#打开我的电脑,直接访问,无任何阻拦,记得登入账户和密码
ftp://192.168.xx.xxx
-----------------------------------------------------------------------------------------
#特定需求需要开防火墙端口
#开放端口
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=21100/tcp --permanent
firewall-cmd --zone=public --add-port=21101/tcp --permanent
firewall-cmd --zone=public --add-port=21102/tcp --permanent
firewall-cmd --zone=public --add-port=21103/tcp --permanent
firewall-cmd --zone=public --add-port=21104/tcp --permanent
firewall-cmd --zone=public --add-port=21105/tcp --permanent
firewall-cmd --zone=public --add-port=21106/tcp --permanent
firewall-cmd --zone=public --add-port=21107/tcp --permanent
firewall-cmd --zone=public --add-port=21108/tcp --permanent
firewall-cmd --zone=public --add-port=21109/tcp --permanent
firewall-cmd --zone=public --add-port=21110/tcp --permanent
#刷新firewalld
firewall-cmd --reload
-----------------------------------------------------------------------------------------
#关闭端口方法
firewall-cmd --zone=public --remove-port=21110/tcp --permanent
firewall-cmd --reload
添加新的 FTP 用户添加到现有容器:
docker exec -it vsftpd bash
mkdir /home/vsftpd/myuser1
echo -e "myuser1\nmypass" >> /etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd
#账户和密码都存在了容器中的这个文件里面
cat /etc/vsftpd/virtual_users.txt