使用 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 资源管理器访问也出现同样的提示:
但使用 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 服务,如下:
用专用的FTP客户端工具就没有关闭 “被动模式”的提示。
完毕!