使用 docker 部署 vsftpd

最终命令:docker run -d -p 8121:21 -p 8120:20 -p 21100-21110:21100-21110 -v /home/nsw/ftpdata:/home/vsftpd/nsw -e FTP_USER=nsw -e FTP_PASS=123 -e PASV_ADDRESS=192.168.1.2 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e LOCAL_UMASK=022 --name vsftpd --restart=always fauria/vsftpd

命令解释:

  • -d 使用 daemon 模式新建并启动容器,后面的 --restart=always 可以让容器在重启宿主时也一并启动容器
  • -p 8121:21 -p 8120:20 -p 21100-21110:21100-21110 这个是容器的端口映射,ftp 会使用命令端口(缺省为21)、数据端口(缺省为20)和被动模式端口(连续端口)三类
    • 注意:不要重新映射被动模式端口段,否则连接 ftp 后连 ls 命令都会执行失败,如果宿主机端口段被占用,可以通过后面的 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 来重新定义,并在 -p 21100-21110:21100-21110 内原样映射
  • -v /home/hostuser/ftpdata:/home/vsftpd/nsw 是存储目录映射,可以把容器内的 vsftpd 用户 nsw 的存储目录(/home/vsftpd/nsw)映射到宿主机物理目录(/home/hostuser/ftpdata)上
  • -e FTP_USER=nsw -e FTP_PASS=123 增加 ftp 用户及其密码
  • -e PASV_ADDRESS=192.168.1.2 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 定义被动模式地址和端口
    • 注意:被动模式地址一定要设置成访问者能看到的 IP,多IP尤其要注意
  • -e LOCAL_UMASK=022 定义新创建的子目录和文件应该去除的访问权限,这里是去除 user(无) group(write) other(write)权限,所以新建的目录和文件宿主机的用户可以读取无法写入
    • 注意:如果没有加这条环境变量,新建的目录和文件权限为 700,宿主机的用户无法查看目录和读取文件。因为 vsftpd 其实是读取环境变量用来修改(容器内部)/etc/vsftpd/vsftpd.conf 内的 local_umask,其原始值为  local_umask=077,所以新建的目录和文件权限为 700,宿主机的用户因此无法查看目录和读取文件
  • --name vsftpd 为新容器起一个别名
  • fauria/vsftpd 是使用的 docker image 名字,如果本地没有缓存,会先去下载,使用 docker search vsftpd 搜索后发现这个 image stars 最多
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值