我们先了解一下FTP
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输
不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。
使用 Docker 搭建 FTP 服务,不仅十分简单,而且可以对宿主机有一定的隔离。下面介绍下Docker创建FTP服务器,内容介绍如下所示:
一.创建命令如下
docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 -v /opt/vsftpd/file:/home/vsftpd -e FTP_USER=admin -e FTP_PASS=1234 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS=10.73.139.201 -e PASV_ENABLE=YES --name ftp --restart=always --privileged=true fauria/vsftpd
二.命令含义
参数 | 含义 |
---|---|
-d | 后台启动容器 |
-p 20:20 | 将外部的20端口映射到内部的20端口 |
-p 21:21 | 将外部的21端口映射到内部的21端口 |
-p 21100-21110:21100-21110 | 将外部的 21100-21110端口映射到内部的21100-21110端口 |
-v /opt/vsftpd/file:/home/vsftpd | 将本地磁盘的 /opt/vsftpd/file路径映射到内部的/home/vsftpd路径 |
-e FTP_USER=admin | ftp的主用户 |
-e FTP_PASS=1234 | ftp主用户的密码 |
-e PASV_MIN_PORT=21100 | 最小被动端口 |
-e PASV_MAX_PORT=21110 | 最大被动端口 |
-e PASV_ADDRESS=10.73.139.201 | 指定本机的ip |
-e PASV_ENABLE=YES | 启动被动模式 |
–name vsftpd | 取一个名字,之后可以用(docker stop 名字 )来停止容器 |
–restart=always | 开机自启动 |
–privileged=true | 容器内用户获取root权限 |
fauria/vsftpd | 仓库的镜像 |
三.客户端连接
1.客户端可以直接安装filezilla进行连接
如果你的客户端连接不上,你需要用telnet命令来看下
telnet 10.73.139.201 21
如果报错,那可能是防火墙没有打通
2.如果是mac用户,也可以用终端的ftp命令进行连接
ftp 10.73.139.201
输入账号admin,密码1234
然后ls命令,如果报错
500 Illegal PORT command.
500 Unknown command.
425 Use PORT or PASV first.
可以在ftp下执行以下命令
pass
输出
Passive mode on
这个时候,就可以正常的ls了
到此这篇关于Docker创建FTP服务器的文章就介绍到这了,更多相关Docker FTP服务器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!