zoukankan      html  css  js  c++  java
  • 如何在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等软件登录上去了。

  • 相关阅读:
    Solr的学习使用之(五)添加索引数据
    django视图层
    django的路由层
    第九章 MySQL 高可用(MHA)
    第八章 mysql的主从复制
    第七章 mysql的备份与恢复
    第六章 mysql日志
    第五章 存储引擎
    第四章 元数据 索引
    第三章 mysql 数据库接口程序以及SQL语句操作
  • 原文地址:https://www.cnblogs.com/chester-cs/p/15212894.html
Copyright © 2011-2022 走看看