使用 Docker 搭建 FTP 服务

使用 Docker 搭建 FTP 服务

1. 创建 FTP 文件存储目录
创建 FTP 文件存储目录,这里创建 /data/ftpData 。
# pwd
/data
# mkdir ftpData
# cd ftpData/
# pwd
/data/ftpData

2. 创建一个 FTP 用户组
创建一个 FTP 用户组,用于存放 FTP 用户。
# groupadd ftpgroup

3. 创建 FTP 用户登入时的主目录的父目录
# cd /home/
# pwd
/home
# mkdir ftpusers
# cd ftpusers/
# pwd
/home/ftpusers

4. 创建一个 FTP 用户
创建一个 FTP 用户,指定登入时的主目录并加入 ftpgroup 组:
# useradd -d /home/ftpusers/ftpuser1 -g ftpgroup ftpuser1

设置密码:
# passwd ftpuser1

设置不允许这个用户登陆操作系统:
# usermod -s /sbin/nologin ftpuser1

5. 拉取 vsftpd 镜像
# docker pull fauria/vsftpd

查看镜像:
# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker.io/fauria/vsftpd        latest              8143ebe0e513        7 months ago        391 MB

6. 创建容器
# docker run  -d --restart=always --network host -v /data/ftpData:/home/vsftpd -e FTP_USER=ftpuser1 -e FTP_PASS=ftpuser1 --privileged --name vsftpd21 docker.io/fauria/vsftpd

查看容器:
# docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS       
PORTS                                                                                   NAMES
288e0b17318e        docker.io/fauria/vsftpd        "/usr/sbin/run-vsf..."   3 weeks ago         Up 2 weeks                                                                                                  vsftpd21

这时到前面创建的 FTP 文件存储目录(/data/ftpData)下看到有 ftpuser1 用户的 FTP 目录:
# pwd
/data/ftpData
# ls
ftpuser1

在文件夹 /data/ftpData/ftpuser1 里随便创建个文件,比如 aa.txt,以备后面测试用:
# pwd
/data/ftpData/ftpuser1
# vi aa.txt
# ls
aa.txt

7. 验证 FTP 服务
安装FTP客户端:
# yum -y install ftp
连接FTP服务器(ftp [ 主机名 | IP地址]):
# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (127.0.0.1:root): ftpuser1
331 Please specify the password.
Password: 输入创建容器时设置的密码(FTP_PASS=ftpuser1,所以输入 ftpuser1)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
登录成功后,就直接进入 ftpuser1 用户的 FTP 目录(/data/ftpData/ftpuser1)下。
下面用 ls 命令查看目录内容:
ftp> ls
227 Entering Passive Mode (49,4,10,236,82,112).  
ftp: connect: Connection refused
上面提示执行“passive”命令关闭“被动模式”,如果用 Windows 资源管理器访问也出现同样的提示:
使用 Docker 搭建 FTP 服务
但使用 FTP 客户端工具就没用这样的提示,后面讲用 CuteFTP 工具测试。
先关闭 “被动模式” 试试:
ftp> passive    
Passive mode off.
ftp> ls       // 再执行 ls 命令
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 ftp      ftp            20 Jan 02 08:20 aa.txt         // 显示出目录下的内容
226 Directory send OK.
ftp> 
验证 FTP 服务成功!

8. 用 FTP 客户端工具测试 FTP 服务
下面使用 FTP 客户端工具 CuteFTP 测试 FTP 服务,如下:
使用 Docker 搭建 FTP 服务

使用 Docker 搭建 FTP 服务

使用 Docker 搭建 FTP 服务
用专用的FTP客户端工具就没有关闭 “被动模式”的提示。

完毕!