Docker搭建vsftpd服务

  1. Docker搭建vsftpd服务
    1. 1、简介
    2. 2、环境变量
    3. 3、用例

Docker搭建vsftpd服务

1、简介

这个 Docker 容器实现了一个 vsftpd 服务器,具有以下特点:

  • Centos 7 基础镜像。
  • vsftpd 3.0
  • 虚拟用户
  • 被动模式
  • 记录到文件或 STDOUT。

2、环境变量

该镜像使用环境变量来允许在运行时配置一些参数:

  • 变量名: FTP_USER
  • 默认值:管理员
  • 接受的值:任何字符串。避免空格和特殊字符。
  • 说明:默认 FTP 帐户的用户名。如果FTP_USER在运行时没有通过环境变量指定,admin将默认使用。

  • 变量名: FTP_PASS
  • 默认值:随机字符串。
  • 接受的值:任何字符串。
  • 说明:如果您没有通过 为默认的 FTP 帐户指定密码,FTP_PASS则会自动生成一个 16 个字符的随机字符串。您可以通过容器日志获取该值。

  • 变量名: PASV_ADDRESS
  • 默认值:Docker 主机 IP/主机名。
  • 接受的值:任何 IPv4 地址或主机名(请参阅 PASV_ADDRESS_RESOLVE)。
  • 说明:如果不指定要在被动模式下使用的 IP 地址,将使用 Docker 主机的路由 IP 地址。请记住,这可能是本地地址。

  • 变量名: PASV_ADDR_RESOLVE
  • 默认值:否
  • 接受的值:<NO|YES>
  • 描述:如果您想在 PASV_ADDRESS 选项中使用主机名(而不是 IP 地址),请设置为 YES。

  • 变量名: PASV_ENABLE
  • 默认值:是
  • 接受的值:<NO|YES>
  • 说明:如果要禁止 PASV 方法获取数据连接,请设置为 NO。

  • 变量名: PASV_MIN_PORT
  • 默认值:21100
  • 接受的值:任何有效的端口号。
  • 说明:这将用作被动模式端口范围的下限。请记住使用docker -p参数发布您的端口。

  • 变量名: PASV_MAX_PORT
  • 默认值:21110
  • 接受的值:任何有效的端口号。
  • 说明:这将用作被动模式端口范围的上限。启动具有大量已发布端口的容器将需要更长的时间。

  • 变量名: XFERLOG_STD_FORMAT
  • 默认值:否
  • 接受的值:<NO|YES>
  • 描述:如果您希望以标准 xferlog 格式写入传输日志文件,请设置为 YES。

  • 变量名: LOG_STDOUT
  • 默认值:空字符串。
  • 接受值:要启用的任何字符串,空字符串或未定义以禁用。
  • 说明:通过STDOUT输出vsftpd日志,方便通过容器日志访问。

  • 变量名: FILE_OPEN_MODE
  • 默认值:0666
  • 接受的值:文件系统权限。
  • 描述:创建上传文件的权限。Umasks 应用于此值之上。如果您希望上传的文件可执行,您可能希望更改为 0777。

  • 变量名: LOCAL_UMASK
  • 默认值:077
  • 接受的值:文件系统权限。
  • 描述:为本地用户设置的文件创建 umask 值。笔记!如果要指定八进制值,请记住“0”前缀,否则该值将被视为基数为 10 的整数!

  • 变量名: REVERSE_LOOKUP_ENABLE
  • 默认值:是
  • 接受的值:<NO|YES>
  • 描述:如果您想避免名称服务器不响应反向查找的性能问题,请设置为 NO。

  • 变量名: PASV_PROMISCUOUS
  • 默认值:否
  • 接受的值:<NO|YES>
  • 说明:如果要禁用 PASV 安全检查以确保数据连接源自与控制连接相同的 IP 地址,请设置为 YES。仅当您知道自己在做什么时才启用!唯一合法的用途是在某种形式的安全隧道方案中,或者可能是为了促进 FXP 支持。

  • 变量名: PORT_PROMISCUOUS
  • 默认值:否
  • 接受的值:<NO|YES>
  • 说明:如果要禁用确保传出数据连接只能连接到客户端的 PORT 安全检查,请设置为 YES。仅当您知道自己在做什么时才启用!这样做的合法用途是促进 FXP 支持。

该图像公开了端口2021. 此外,导出两个卷:/home/vsftpd,其中包含用户主目录,以及/var/log/vsftpd,用于存储日志。

在主机和容器 ( /home/vsftpd)之间共享主目录时,所有者用户 ID 和组 ID 应分别为 14 和 50。这对应于容器上的 ftp 用户和 ftp 组,但可能匹配主机上的其他内容。

3、用例

1)创建一个临时容器用于测试目的:

  docker run --rm fauria/vsftpd

2)使用默认用户帐户创建处于活动模式的容器,并绑定数据目录:

docker run -d -p 21:21 -v /my/data/directory:/home/vsftpd --name vsftpd fauria/vsftpd
# see logs for credentials:
docker logs vsftpd

3)使用自定义用户帐户创建生产容器,绑定数据目录并启用主动和被动模式:

docker run -d -v /my/data/directory:/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

4)手动将新的 FTP 用户添加到现有容器:

docker exec -i -t vsftpd bash
mkdir /home/vsftpd/myuser
echo -e "myuser\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

文章内容仅用于作者学习使用,如果内容侵犯您的权益,请立即联系作者删除,作者不承担任何法律责任。

×

喜欢就点赞,疼爱就打赏