一、FastDFS简介

FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等。

外话:FastDFS 是阿里余庆大神做的一个个人项目,从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs

二、开始搭建FastDFS

2.1 拉取镜像

默认已经安装好docker并可以拉取镜像,执行以下命令拉取fastdfs镜像。

docker pull delron/fastdfs

在创建容器之前我们先简单说一下 FastDFS,FastDFS 系统有三个角色:

  • 跟踪服务器(Tracker Server):跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
  • 存储服务器(Storage Server):存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
  • 客户端(Client):上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

说到这就是想告诉小伙伴,接下来我们可能创建 跟踪服务器容器、存储服务器容器、客户端容器 这三个容器…

2.2 创建容器并挂载目录

2.2.1 创建挂载目录

(base) [root@localhost /]# cd /var
(base) [root@localhost var]# mkdir fdfs
(base) [root@localhost var]# cd fdfs
(base) [root@localhost fdfs]# mkdir tracker
(base) [root@localhost fdfs]# mkdir storage
(base) [root@localhost fdfs]# mkdir nginx
(base) [root@localhost fdfs]# chmod 777 tracker storage nginx

2.2.2 构建tracker容器(跟踪服务器容器)

docker run --privileged=true -dit --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
  • --privileged=true 使挂载的目录有特权去操作他,不加的话有可能出现挂载之后容器自动退出;
  • -dit 以守护进程的方式启动容器,并在后台运行;
  • -v 指定绑定数据卷;
  • --name 指定容器名称;
  • /var/fdfs/tracker 宿主机所在的文件夹;
  • /var/fdfs 容器中的文件夹
  • /var/fdfs/tracker:/var/fdfs 将容器中的文件夹挂载到宿主机的文件夹下,这样可以在宿主机文件夹下操作容器中的文件夹,这两者文件夹中的文件是一直保持一致的;

2.2.3 构建storage容器(存储服务器容器)

docker run --privileged=true -dit --network=host --name storage -e TRACKER_SERVER=192.168.33.3:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

TRACKER_SERVER=192.168.33.3:22122 这里要注意改为自己宿主机的ip地址(就是你本机的IP),端口22122是默认的,不用修改!

docker ps之后可以看到这两个容器已经在运行中了

2.3 测试服务

两个容器创建完之后,但此时两个容器其实并没有关联起来,我们进入tracker容器,通过client.conf测试一下:

docker exec -it tracker bash
cd /etc/fdfs/
ls
cat client.conf

可以看到client.conf配置文件

我这里的tracker_server=192.168.33.3,修改成自己的IP,跟上面构建storage容器时的IP保持一致。

尝试执行一下连接:

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配置文件了。

2.4 修改client.conf文件

通过 docker exec -it tracker bash 进入 tracker 容器后不能使用 vi vim 命令,所以干脆将 client.conf 配置文件复制出来,在宿主机修改完再粘贴回去。

先退出容器,执行:exit

执行命令:

docker cp tracker:/etc/fdfs/client.conf /var/fdfs/tracker

直接点击编译client.conf文件,或者是通过vi client.conf修改tracker_server也是可以的,直接修改成自己的宿主机IP。

修改后保存,然后将修改后的文件替换回去。指令命令:

docker cp /var/fdfs/tracker/client.conf tracker:/etc/fdfs

没有报错,证明修改成功。

至此,配置文件修改完了,接下来我们创建文件上传测试一下。

三、 测试FastDFS

3.1 上传文件

3.1.1 第一种方式,进入容器中上传文件

执行命令,进入 tracker 容器中:

1

docker exec -it tracker bash

随便创建一个 txt 文件:

1

echo "niceyoo" > niceyoo.txt

然后通过 fdfs_upload_file 命令将 niceyoo.txt 文件上传至服务器:

1

fdfs_upload_file /etc/fdfs/client.conf niceyoo.txt

如果此时报了如下错误:

那么就创建一下这个路径,没有的跳过:

1

mkdir -p /home/yuqing/fastdfs

创建目录后重新尝试提交:

直接网页访问可以看到这个证明是成功的。

3.1.2 第二种上传方式,在数据卷中上传

我们可以利用docker的exec命令不进入容器,直接在宿主机的环境下调用容器内的命令,因为文件夹已经共享,所以我们输入的文件目录虽然是容器中的/var/fdfs/storage目录,但是实际上该上传的文件就在宿主的/var/fdfs目录中。

拉取一个文件到/var/fdfs/storage文件夹中。这里示范storage容器,两个容器都是一样的,一个存储型服务器容器和一个是跟踪型服务器容器。

执行命令:

 docker exec -i storage /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /var/fdfs/1.txt

这里的/var/fdfs/1.txt  是容器内的文件路径,为啥我们上传文件是到宿主机的/var/fdfs/storage文件夹下的,怎会出现在容器中呢?这是因为我们在创建容器的时候挂载了数据卷,所以我们在宿主机挂载的文件夹就可以操作容器内的文件夹了。

浏览器访问一下看看:

可以看到我们在1.txt文件中写的内容,证明是成功的。这两种方式都可以上传文件,第二种比较方便。

到这里,我们整个FastDFS已经搭建完成了。

下一篇我们讲如何将FastDFS文件下载并还原为原文件的名字:FastDFS下载文件自定义命名_花开花落与云卷云舒的博客-CSDN博客

谷歌浏览器搜索、看Youtube视频必备网站:SockBoom 

或者网址:https://sockboom.cool/auth/register?affid=212828

docker搭建FastDFS及遇到的问题解决相关推荐

  1. win10下docker搭建fastDFS

    win10下docker搭建fastDFS 最近因公司需求,搭建自己的文件服务器,不再使用oss.于是在本地开发环境win10下先整个demo出来. docker下安装fastDFS win10下 d ...

  2. 使用docker搭建FastDFS文件系统

    1.首先下载FastDFS文件系统的docker镜像 docker search fastdfs 2.使用docker镜像构建tracker容器(跟踪服务器,起到调度的作用): docker run ...

  3. Docker 搭建FastDFS文件系统

    1.检索和拉取fastDFS镜像 # 检索fastdfs docker search fastdfs# 拉取fastdfs docker pull delron/fastdfs 2.使用docker镜 ...

  4. docker搭建fdfs实现缓存图片视频

    docker搭建FastDFS文件系统 1 查看fastdfs的镜像! docker search fastdfs 2 拉取镜像 docker pull delron/fastdfs 3 查看镜像 d ...

  5. Docker中搭建FastDFS文件系统(多图)

    关于FastDFS FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如 ...

  6. 基于docker - 单机版FastDFS搭建

    基于docker - 单机版FastDFS搭建 ###### 安装单机版 ###### # make docker container docker run -it -P -v /home/insun ...

  7. 基于Docker搭建分布式文件系统FastDfs

    最近公司业务要做了一个报表管理系统,这就涉及到了海量文件存储问题.对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文件较少的 ...

  8. Docker搭建分布式文件系统fastDFS及SpringBoot整合fastDFS

    docker安装fastdfs镜像 docker pull morunchang/fastdfs 运行tracker docker run -d --name tracker --net=host m ...

  9. WindowsServer2019下使用Docker搭建内网GitLab

    文章目录 导读 需求文档说,要有域名. 第一次尝试 第二次尝试 第三次尝试 DNS配置 一定要优先设置域! 哪怕你是管理员也不准改的文件! 绑定域名 测试访问 配置DNS Windows所有版本通用的 ...

  10. 【实战】本机用docker搭建elk环境并接入frostmourne,实现监控报警效果

    本篇文章着重的是实战方面,基于本机使用docker来搭建elk环境,然后接入frostmourne来实现监控.报警.分析系统,后续会再发文来介绍如何将此监控报警发布到生产环境. 本机用docker搭建 ...

最新文章

  1. linux动态库命名规则
  2. C# 获取几种路径的方式
  3. 概率编程库Pymc3案例之鲁棒线性回归
  4. ostu进行遥感图像的分割
  5. php运行出现Call to undefined function curl_init()解决方法
  6. java什么叫声明异常_java – 声明异常而不是处理它的重点是什么
  7. 【iOS开发】在一个Xcode页面建立多个工程
  8. 判断一个整数的奇偶性php,【算法】- 判断一个整数是否是奇数
  9. python正则表达式提取字符串密码_用python正则表达式提取字符串
  10. 这些超好用的 Mac 系统自带软件,来试试
  11. css 伪类 :fullscreen 应用于当前处于全屏显示模式的元素。
  12. 角度与弧度之间的换算
  13. Spring之refresh的12个步骤
  14. 尴尬!亚马逊的AI情绪识别软件竟然混淆情感表达
  15. 京东到家开放平台网关系统设计实践
  16. 推荐几个阿里,百度大佬的订阅号给大家
  17. Jenkins拉取代码返回错误码128
  18. C盘空间不足?扩充C盘
  19. linux+swap分区规则_linux关于swap分区的划分规则
  20. 《伤寒论》的APP设想

热门文章

  1. 基于jsp+mysql的SSH医疗门诊预约挂号管理系统
  2. 基于Proteus学习单片机系列(十)——LCD1602
  3. Eclipse更换护眼背景色——传说中的绿豆沙
  4. lisp方格网法计算土方量_土地整理中方格网法计算土方量
  5. MSP430(CCS工程下)添加printf实现打印功能
  6. 中国大学慕课python答案 北京理工大学_中国大学MOOC慕课_Python语言程序设计_慕课答案...
  7. JSP课程设计——民航售票管理系统
  8. 干货推荐 | 一个好的产品设计原则都有这些
  9. module项目没有蓝色小方块问题
  10. Python地理数据处理 四:矢量数据读写(二)