Docker容器中搭建FTP服务器并运行

我们先了解一下FTP
   文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
   FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。

    使用 Docker 搭建 FTP 服务,不仅十分简单,而且可以对宿主机有一定的隔离。下面以 CentOS 系统为例,演示如何通过容器运行 FTP 服务。

1,拉取镜像,
首先执行如下命令将镜像下载到本地:

docker pull fauria/vsftpd

2,启动容器
执行如下命令实例化 ftp 服务:

参数说明: /var/ftp:/home/vsftpd:映射 docker 容器 ftp 文件根目录(冒号前面是宿主机的目录,建议宿主机使用
/var 这样公共权限文件夹,如果使用类似 /home 这样的目录可能会造成客户端无法连接上服务器问题)
-p:映射 docker 端口(冒号前面是宿主机的端口)
-e FTP_USER=test -e FTP_PASS=test :设置默认的用户名密码(都为 test) PASV_ADDRESS:宿主机 ip,当需要使用被动模式时必须设置。 PASV_MIN_PORT~
PASV_MAX_PORT:给客服端提供下载服务随机端口号范围,默认 21100-21110,与前面的 docker 端口映射设置成一样。

docker run -d -v /var/ftp:/home/vsftpd \
-p 20:20 -p 21:21 -p  21100-21110:21100-21110 \
-e FTP_USER=test -e FTP_PASS=test \
-e PASV_ADDRESS=192.168.60.128 \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd

4,新建用户文件夹
(1)首先执行如下命令进入到容器里面:

docker exec -i -t vsftpd bash

(2)由于前面我们启动的时候设置用户名为 test,已经自动创建对应的用户文件夹(所以下面这个文件夹无需我们再次手动创建):

mkdir /home/vsftpd/test

(3)为方便演示,在 test 用户文件夹下新建一个 test.txt 文件。

vi /home/vsftpd/test/test.txt

5,访问服务
(1)我们可以直接使用文本管理(win)进行访问,(mac直接在浏览器访问)地址如下:
ftp://ip地址

如果不能访问看防火墙状态

查看防火墙:systemctl status firewalld 
启动防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld

你可能感兴趣的:(Linux,docker,ftp,linux,服务器,centos)