一、关于FastDFS
FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。
1. 上传流程图
2. 下载流程图
二、安装FastDFS
1. 搜索Docker镜像
docker search fastdfs
我们选择 第一个镜像,season/fastdfs 镜像相对纯净些,本文就是基于 season/fastdfs 镜像的
2. 拉取安装镜像
执行命令
docker pull season/fastdfs:1.2
创建3个挂载目录
mkdir -p /home/dockerHome/fastdfs/tracker -p /home/dockerHome/fastdfs/storage -p /home/dockerHome/fastdfs/storage_path
创建tracker容器(跟踪服务器容器)
docker run -d --name tracker -p 8889:22122 -v /home/dockerHome/fastdfs/tracker:/fastdfs/tracker/data season/fastdfs:1.2 tracker
修改tracker容器配置文件
先将容器中的配置文件copy出来,然后再修改好,再复制回去,再重启
- copy tracker 中的配置文件到宿主机
docker cp tracker:/etc/fdfs/client.conf /home/dockerHome/fastdfs/
内容如下:
# connect timeout in seconds
# default value is 30s
connect_timeout=30
# network timeout in seconds
# default value is 30s
network_timeout=60
# the base path to store log files
base_path=/fastdfs/client
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=xxx.xxx.x.x:8889
-
修改 tracker_server 配置,变成自己服务器外网地址或域名。
-
复制编辑好的文件到tracker容器中,然后重启,命令如下:
docker cp /home/dockerHome/fastdfs/client.conf tracker:/etc/fdfs/
创建storage容器(存储服务器容器)
docker run -d --name storage -p 23000:23000 -p 8888:8888 -e TRACKER_SERVER=xxx.xxx.x.x:8889 -v /home/dockerHome/fastdfs/storage:/fastdfs/storage/data -v /home/dockerHome/fastdfs/storage_path:/fastdfs/store_path -e GROUP_NAME=group1 season/fastdfs:1.2 storage
TRACKER_SERVER对应自己的外网地址或者域名
上面都运行好之后,进入storage容器中,命令如下 :
docker exec -it storage /bin/bash
然后执行如下命令检测tracker和storage是否互通:
fdfs_monitor /etc/fdfs/storage.conf
看到如下提示就代表成功互通了:ip_addr = xxx.xxx.x.x ACTIVE
Group 1:
group name = group1
disk total space = 40188 MB
disk free space = 17894 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0
Storage 1:
id = 47.99.180.206
ip_addr = xxx.xxx.x.x ACTIVE
http domain =
version = 4.08
join time = 2022-01-05 05:40:04