• 如何在docker容器中搭建ftp服务


      参考资料:

      https://www.cnblogs.com/Eric-Hwang/articles/4244287.html

      https://github.com/fauria/docker-vsftpd

      https://www.cnblogs.com/jbxie/p/12092293.html

      光看上面三个参考资料而不知道原理,你是没办法在docker容器中成功把ftp服务起起来的。

      首先是原理部分,ftp分为主动模式和被动模式。主动模式使用20和21端口,其中20为数据端口,21为控制端口。被动模式使用21控制端口和一个其他随机端口作数据端口。主动模式因为防火墙的原因,经常会断掉,因此被动模式是通常情况下的优选。当宿主机端口紧张的时候,我们只需要(至少需要)两个端口作端口映射,即一个21控制端口(例子中使用45009);一个其他非公认数据端口(例子中使用45010)。

      知道了原理,我们拉一个别人封装好的vsftpd(开源ftp服务器)镜像即可很快地部署ftp。

    docker pull fauria/vsftpd

      什么?你已经有了一个容器,不想重新使用别人的镜像。那么你也只需要使用apt-get install vsftpd命令即可自己去起vsftpd服务。只是这个搭建的过程会踩一些坑,比如vsftpd启动脚本的bug,配置文件等。搜索引擎会帮到你。

      下面还是专注于vsftpd docker。

      我们有了一个docker,下面就只需要按照参考资料中的命令来做即可。具体命令如下:

    docker run -d -v /data/ftp:/home/vsftpd -p 45009:21 -p 45010:45010 -e FTP_USER=ftpuser -e FTP_PASS=654321 -e PASV_ADDRESS=XX.XX.XX.XX -e PASV_MIN_PORT=45010 -e PASV_MAX_PORT=45010 --name ftpserver --restart=always fauria/vsftpd
    

      下面解释一下:

      1. -v /data/ftp:/home/vsftpd

      这句话是将宿主机的/data/ftp文件夹和容器的home文件夹作一个映射,之后容器中上传的东西都可以在/data/ftp中看到。

      2. -p 45009:21 -p 45010:45010

      这句话就是原理部分的端口映射了

      3. -e FTP_USR and FTP_PASS

      设置初始的ftp用户和密码

      4. PASV_ADDRESS=XXX

      设置宿主机的ip地址即可。这个我的理解就是服务器不知道自己的外部ip,要显式地指定,这样在S to C交换信息的时候才不会出错。

      5. PASV_MIN_PORT和PASV_MAX_PORT都设置成一样的

      此时就仅开放一个端口作为数据端口了

      容器运行起来之后就可以使用filezilla等软件登录上去了。

  • 相关阅读:
    认识岗位-带你一起偷窥产品经理的日常
    SpringBoot单元测试踩坑
    Oracle“ORA-38104: 无法更新ON子句中引用的列”解决方式
    SXSSFWorkbook使用补充
    JAVA复制字符串并用指定字符串拼接
    一个简单for循环的时间复杂度
    SXSSFWorkbook的简单使用
    AOP行为日志
    antV G2 为柱状图添加背景颜色
    AntV G2 图表tooltip重命名
  • 原文地址:https://www.cnblogs.com/chester-cs/p/15212894.html
Copyright © 2020-2023  润新知