Docker中搭建FastDFS文件系统(多图)
关于FastDFS
FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。
外话:FastDFS 是阿里余庆大神做的一个个人项目,从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs
本文基于Docker搭建,以下是正文内容:
1、搜索镜像
执行命令:
docker search fastdfs
然后界面会搜出一大堆镜像,选哪个呢?
老规矩,我们选择start数最多的准没错,什么?start数不放心,怕被挂马?ok,我们再去镜像仓库看一下:
补充: 其实看这些镜像的描述也能看出一些区别来的,比如 ygqygq2/fastdfs-nginx,该镜像是整合了 Nginx 的 fastdfs,那么新的问题来了,为什么要整合 Nginx?因为对于 fastdfs 来说,安装后只能在本机访问… 我上传文件肯定是为了能够访问的呀,所以为了提供 web 访问,那么就需要集成 Nginx 了,但是比如就是想自己单独搞 Nginx… 那么肯定就不会选了嘛,season/fastdfs 镜像相对纯净些,本文就是基于 season/fastdfs 镜像的,后面也附带配置 Nginx…
2、安装镜像
执行命令:
docker pull season/fastdfs:1.2
之所以选择 1.2 版本,防止再次更新后本文不适合 latest 版本,执行截图如下:
3、创建容器并挂载目录
在创建容器之前我们先简单说一下 FastDFS,FastDFS 系统有三个角色:
跟踪服务器
(Tracker Server):跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。存储服务器
(Storage Server):存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。客户端
(Client):上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
说到这就是想告诉小伙伴,接下来我们可能创建 跟踪服务器容器、存储服务器容器、客户端容器 这三个容器…
3.1、创建出所需要的目录
我们先把需要的一些目录创建出来(数据目录、数据存储目录等),执行命令:
mkdir -p /usr/local/server/fastdfs/trakcer/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/storage/path
3.2、创建trakcer容器(跟踪服务器容器)
执行命令:
docker run -id --name tracker \
-p 22122:22122 \
--restart=always --net host \
-v /usr/local/server/fastdfs/tracker/data:/fastdfs/tracker/data \
season/fastdfs:1.2 tracker
再唠叨一下上方命令:
- -d:让容器在后台运行
- -p:指定容器内部使用的网络端口映射到我们使用的主机上
- –name:指定容器创建的名称
- -v:容器跟宿主机之间的挂载目录
3.3、创建storage容器(存储服务器容器)
执行命令(非最终执行命令,请修改为自己的ip地址):
docker run -id --name storage \
--restart=always --net host \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-e TRACKER_SERVER="10.211.55.4:22122" \
season/fastdfs:1.2 storage
3.4、client测试
两个容器创建完之后,但此时两个容器其实并没有关联起来,我们进入tracker容器,通过client.conf测试一下:
docker exec -it tracker bash
cd /etc/fdfs/
ls
cat client.conf
输出的 client.conf
都是默认配置,我们可以找到其中的 track_server
地址:
尝试执行一下连接:
fdfs_monitor client.conf
然后会得到如下内容:
ERROR - file: ../common/connection_pool.c, line: 84, connect to 192.168.209.121:22122 fail, errno: 110, error info: Connection timed out
也就是在没有修改client配置之前,默认 tracker 是去连接 192.168.209.121
地址的,那么接下来就是需要去配置client配置文件了。
3.4、修改client.conf配置文件
通过 docker exec -it tracker bash
进入 tracker 容器后不能使用 vi vim 命令,所以干脆将 client.conf 配置文件复制出来,在宿主机修改完再粘贴回去。
执行命令:
docker cp trakcer:/etc/fdfs/client.conf /usr/local/server/fastdfs/
我们通过 docker 指令将配置文件复制到 /usr/local/server/fastdfs/
目录。
我们编辑这个文件,修改 tracker_url 地址(vi client.conf
):
修改后保存,然后将修改后的文件替换回去。指令命令:
docker cp /usr/local/server/fastdfs/client.conf tracker:/etc/fdfs
至此,配置文件修改完了,接下来我们创建文件上传测试一下。
4、文件上传测试
执行命令,进入 tracker 容器中:
docker exec -it tracker bash
随便创建一个 txt 文件:
echo "niceyoo" > niceyoo.txt
然后通过 fdfs_upload_file 命令将 niceyoo.txt 文件上传至服务器:
fdfs_upload_file /etc/fdfs/client.conf niceyoo.txt
如果此时报了如下错误:
那么就创建一下这个路径,没有的跳过:
mkdir -p /home/yuqing/fastdfs
创建目录后重新尝试提交:
我们复制出这个文件名来:group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt
,这个名称后面有用,将用作后面配置nginx时配置访问文件路径。
因为我们之前挂载了宿主机的目录,我们去 cd /usr/local/server/fastdfs
看一下:
cd /usr/local/server/fastdfs/data/storage/data
ls
输出内容如下:
5、配置Nginx
前面的补充已经提到了,默认上传的文件是只能在本机访问的,当然这样肯定是不行的,所以我们需要配置一下Nginx 来帮我们实现 Web 访问的效果。
创建nginx目录:
mkdir -p /usr/local/server/fastdfs/nginx/
将storage容器中的nginx配置文件复制出来:
docker cp storage:/etc/nginx/conf/nginx.conf /usr/local/server/fastdfs/nginx/
修改nginx中的配置:
vi /usr/local/server/fastdfs/nginx/nginx.conf
找到local节点,修改为:
location / {root /fastdfs/store_path/data;ngx_fastdfs_module;}
相关截图如下:
接下来就是创建nginx容器,并指向刚刚的配置文件了。
没有安装过nginx的小伙伴同样可以执行如下指令,默认会帮你拉取镜像然后安装的。
注意:请修改ip地址后再执行
docker run -id --name fastdfs_nginx \
--restart=always \
-v /usr/local/server/fastdfs/data/storage:/fastdfs/store_path \
-v /usr/local/server/fastdfs/nginx/nginx.conf:/etc/nginx/conf/nginx.conf \
-p 8888:80 \
-e TRACKER_SERVER=10.211.55.4:22122 \
season/fastdfs:1.2 nginx
至此,我们查看一下目前创建以及启动的容器:
我们测试一下之前上传的文件 group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt
,执行如下命令:
curl -i http://127.0.0.1:8888/group1/M00/00/00/CtM3BF84iz2AWE_JAAAACBfWGpM793.txt
执行结果:
至此,整个过程就搭建成功了,我们通过浏览器访问一下:
搭建完成怎么在项目当中使用呢?
SpringBoot集成FastDFS依赖实现文件上传
你知道的越多,不知道的就越多,欢迎关注我的微信公众号:niceyoo
Docker中搭建FastDFS文件系统(多图)相关推荐
- 使用docker搭建FastDFS文件系统
1.首先下载FastDFS文件系统的docker镜像 docker search fastdfs 2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用): docker run ...
- Docker 搭建FastDFS文件系统
1.检索和拉取fastDFS镜像 # 检索fastdfs docker search fastdfs# 拉取fastdfs docker pull delron/fastdfs 2.使用docker镜 ...
- Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)
文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...
- 在docker中搭建apache Tomcat+JDK环境
本人电脑环境:安装好docker的open SUSE操作系统 最终的docker镜像:ubuntu+tomcat+jdk 运行ubuntu镜像 sudo docker run -it -v /home ...
- Docker - Docker中搭建MySQL主从
1.pull完centos7纯净版的镜像后,创建容器,然后将宿主机上下载的MySQL文件 (MySQL下载地址:http://mysql.mirror.kangaroot.net/Downloads/ ...
- qnap 威联通nap在docker中搭建蚂蚁笔记leanote的操作心得
今天在网上无意中看到有人对笔记记事本的评论,其中推荐了蚂蚁笔记关于编程方面的记事有很大的优势,我就花费了大约2个多小时研究了一下,原本就想下载app直接使用,后来发现这是一个开源的平台,可以直接在do ...
- 在Docker中搭建Oracle数据库,并使用PL/SQL Developer链接
原文地址::https://blog.csdn.net/qq_17518433/article/details/72835844?utm_medium=distribute.pc_relevant_t ...
- 在docker中搭建xss漏洞靶场
使用docker搭建xss漏洞靶场(含常用靶场) 在Xshell中安装镜像 使用docker-compose部署容器 安装镜像(快速版) 安装docker-compose 进入安装包页面来部署容器 进 ...
- docker 中搭建 PHP8 + Apache 环境
镜像介绍 PHP8 + Apache 的官方仓库: https://hub.docker.com/_/php?tab=tags 在该仓库如下位置搜索 Apache 相关的镜像 我下载的是下面这个, P ...
最新文章
- 通过eclipse调试MapReduce任务
- C#——判断数列是否排序
- RDIFramework.NET V3.3 Web版角色授权管理新增角色对操作权限项、模块起止生效日期的设置...
- 文献记录(part94)--Clustering and outlier detection using isoperimetric number of trees
- dos攻击命令_Kali Linux系列之拒绝服务攻击(DOS)实战(上)
- Leetcode每日一题:345.reverse-vowels-of-a-string(反转字符串中的元音字母)
- 六千字干货文:到底要怎么去学算法?
- AE快速动画脚本MotionMonkey
- php上课随机点名,课堂随机点名软件
- 快速使用CSS技术手册
- 杭电计算机学院研究生校区,杭州电子科技大学研究生在哪个校区
- nowcoder刷题总结
- 开放式激光振镜+运动控制器(三):振镜矫正
- Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。
- CoolPad 8190工程模式
- C#如何使用skinEngine控件换肤(更换皮肤)?
- 01-如何写SCI论文
- 秒懂Retrofit2之GsonConverter
- 诚之和:滴滴禁闭百日司机、用户与暗战
- 排序系列三: 二分查找法
热门文章
- 前端学习(2876):原生js模块化+弹幕的宽度和高度
- 前端学习(2798):实现图片预览的效果
- “约见”面试官系列之常见面试题之第七十二篇之arrayList(建议收藏)
- 前端学习(2008)vue之电商管理系统电商系统之获取静态属性列表
- oracle之单行函数之课后练习
- 前端学习(1181):vue语法模板
- 前端学习(1095):ES5新增方法
- mybatis学习(50):嵌套查询
- spring学习(15):required属性
- java学习(84):object常用方法tostring,equals,hashcode