1、创建文件存储目录
#进入data目录
cd /data
#创建ftp文件目录
mkdir ftp_data
2、创建FTP用户
#创建一个FTP用户组
groupadd ftpgroup
#创建FTP用户登入时的主目录
cd /home
mkdir ftpusers
#创建一个FTP用户
useradd -d /home/ftpusers/ftpadmin -g ftpgroup ftpadmin
#设置密码
passwd ftpadmin
#设置不允许这个用户登陆操作系统
usermod -s /sbin/nologin ftpadmin
3、拉取vsftpd镜像
docker pull fauria/vsftpd
4、编辑YAML文件
#创建ftp的docker应用的目录 /home/docker_app/ftp
cd /home
mkdir docerk_app
cd docerk_app
mkdir ftp
#创建YAML文件
cd /home/docker_app/ftp
vim docker-compose.yaml
docker-compose.yaml文件内容:
version: '3'
services:
ftp_server:
restart: always
image: fauria/vsftpd
container_name: ftp_server
privileged: true
network_mode: "host"
volumes:
- /data/ftp_data:/home/vsftpd
environment:
- PASV_ADDRESS=192.168.3.220
- PASV_MIN_PORT=10000
- PASV_MAX_PORT=10088
- FTP_USER=ftpadmin
- FTP_PASS=ftpadmin
注意:192.168.3.220 是宿主机的IP,FTP被动模式必须配置
5、使用docker-compose启动
cd /home/docker_app/ftp
docker-compose up -d
6、在windows上用资源管理器打开FTP目录
在浏览器的地址上输入:
ftp://192.168.3.220
如果打不开,可能需要打开FTP被动模式,
控制面板-》Internet选项-》高级-》浏览-》使用被动FTP(用于。。。) 将其勾选上
如果一直跳转到浏览器打开,同样的在internet中配置
控制面板-》Internet选项-》高级-》浏览-》启用FTP文件夹视图(在 IE 之外) 将其勾选上
7、Nginx文件服务器
ftp服务器访问文件是需要验证权限的,而且ftp协议的文件也无法在现代浏览器中显示出来,因此要借助nginx来搭建一个简易的文件服务器。
nginx文件服务器使用和ftp同样的文件存储目录。
#创建nginx文件服务器目录
cd /home/docker_app
mkdir nginx_fs
然后创建nginx的配置文件
#创建配置文件
vim nginx.conf
nginx.conf内容:
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name your.domain.com;
root /usr/share/nginx/files;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
charset utf-8;
}
}
创建 docker-compose.yaml文件
vim docker-compose.yaml
docker-compose.yaml的内容
version: '3'
services:
nginx:
container_name: nginx-download
restart: always
image: nginx
ports:
- "1080:80"
volumes:
- "./nginx.conf:/etc/nginx/nginx.conf"
- "/data/ftp_data/ftpadmin:/usr/share/nginx/files"
然后启动nginx的服务
docker-compose up -d
打开浏览器输入:192.168.3.220:1080
在web应用里面,也只要使用 http://192.168.3.220:1080/黑洞.jpeg 这样的地址 就可以直接在浏览器显示图片了。
为什么要用ftp服务器呢?因为之前用过fastDFS这样的分布式文件服务器,但是甲方的运维人员觉得文件服务器里面的文件他们看不到,看不懂,不方便维护,那就整一个能用windows的文件浏览器来管理的FTP服务器吧,既满足应用上传、下载文件的需要,也满足前端显示图片的需要,还满足客户运维的简单管理的需要。