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/tracker/data
mkdir -p /usr/local/server/fastdfs/storage/data
mkdir -p /usr/local/server/fastdfs/storage/path

3.2、创建tracker容器(跟踪服务器容器)

执行命令:

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依赖实现文件上传

到此这篇关于Docker中搭建FastDFS文件系统(多图教程)的文章就介绍到这了,更多相关Docker搭建FastDFS内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • fastdfs+nginx集群搭建的实现

    一.简介fastdfs 1.什么是fastdfs fastdfs是一个轻量级的开源分布式文件系统: fastdfs主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡: fastdfs实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储支持存储服务器在线扩容支持相同内容的文件只保存一份,节约磁盘空间: fastdfs只能通过Client API访问,不支持POSIX访问方式: fastdfs特别适合大中型网站使用,用来存储资源文件(如:图片.文档.音频.视频等等). 2.

  • Nginx+FastDFS搭建图片服务器的方法实现

    安装环境 Centos 环境依赖: yum -y install gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel # 没有make的需要安装一下make yum install -y make 安装配置流程 1.创建fastdfs目录: mkdir -p /fastdfs/tracker mkdir -p /fastdfs/storage

  • FastDFS分布式文件系统环境搭建及安装过程解析

    FastDFS:分布式文件系统 它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题. 特别适合以文件为载体的在线服务,如相册网站.视频网站等等. FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标, 使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下载等服务. FastDFS服务端有两个角色: 跟踪器(tracker)和存储节点(storage). 跟踪器主要

  • 用nginx+FastDFS一步步搭建文件管理系统

    一.FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装的FastDFS Java API:https://github.com/bojiangzhou/lyyzoo-fastdfs-java 1.简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存

  • Docker中搭建FastDFS文件系统(多图教程)

    关于FastDFS FastDFS 是以 C 语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载)等,特别适合以文件为载体的在线服务,如:图片网站,视频网站等. 外话:FastDFS 是阿里余庆大神做的一个个人项目,从2008年研发FastDFS开源至今,在一些互联网创业公司中备受推崇,GitHub开源地址:https://github.com/happyfish100/fastdfs 本文基于Docker搭建,以下是正文内容: 1

  • 如何使用 docker compose 搭建 fastDFS文件服务器

    上篇文章给大家介绍了使用docker compose安装FastDfs文件服务器的实例详解 今天给大家介绍如何使用 docker compose 搭建 fastDFS文件服务器,内容详情如下所示: 平台 :Mac M1 备注:关于 IP Address 关于 docker 的网络模式,上述文中提到了 docker 的 Host 模式: 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个 Network Namespace.

  • 在Docker中安装Elasticsearch7.6.2的教程

    安装docker 你要安装完成docker,不再说明了. 安装Elasticsearch 注意:使用版本为 7.6.2,你可以选择其他版本 拉取镜像 docker pull elasticsearch:7.6.2 启动容器 docker run --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m"

  • Docker中搭建配置Git环境的过程

    Docker中配置Git环境 工作中遇到了需要在Docker环境中操作GitLab仓库的场景,需要事先在Docker中搭好Git环境. 由于在Docker中对Git仓库操作是全自动化的,因此需要免密拉取仓库和提交等操作,我这里是使用SSH来进行免密操作. 所以首先是配置SSH,其次是配置Docker环境. 配置SSH Key 先生成SSH key: ssh-agent eval $(ssh-agent -s) ssh-keygen -o -t rsa -b 4096 -C "{username}

  • 教你在docker 中搭建 PHP8 + Apache 环境的过程

    目录 镜像介绍 具体操作步骤 PHP 安装扩展 以安装 pdo-mysql 扩展为例 搭建 PHP 站点 镜像介绍 PHP8 + Apache 的官方仓库: https://hub.docker.com/_/php?tab=tags 在该仓库如下位置搜索 Apache 相关的镜像 我下载的是下面这个, PHP 版本是 8.0.6 具体操作步骤 下载镜像: docker pull php:apache-buster, 下载下来后使用 docker images 可以查看到如下信息: 创建容器: d

  • kali安装docker及搭建漏洞环境的详细教程

    目录 前言: docker的简介 安装docker 1. 在kail环境下搭建docker,kali版本要在3.10以上,使用命令查看kali内核 2. 添加添加Docker官方的GPG密钥 3.,然后更新源 4. 然后导入证书 5.安装docker 6.检查安装是否成功 docker的简单使用 1. 启动docker 2. 查看镜像 3.搭建漏洞环境 前言: 言归正传,下面开始学习了.本文仅供学习参考,严禁用于一切违法行为,否则后果自负. docker的简介 Docker 是一个开源的应用容器

  • Ubuntu 16.04 64位中搭建Node.js开发环境教程

    前言 首先说下本文的系统环境是:Ubuntu 16.04 64位,本文内容亲测可用, 大家可以请放心借鉴参考,下面来一起看看详细的步骤. 使用淘宝镜像 淘宝镜像官网是https://npm.taobao.org/ 使用淘宝镜像前请自行安装好 npm 和 node node 和 npm 的安装 node可以在这里下载 本文使用的是官方推荐v4.4.4长期支持版 下载并解压 node-v4.4.4-Linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x64.tar

  • 详解如何在react中搭建d3力导向图

    D3js力导向图搭建 d3js是一个可以基于数据来操作文档的JavaScript库.可以使用HTML,CSS,SVG以及Canvas来展示数据.力导向图能够用来表示节点间多对多的关系. 实现效果:连线有箭头,点击节点能改变该节点颜色和所连接的线的粗细,缩放.拖拽. 版本:4.X 安装和导入 npm安装:npm install d3 前端导入:import * as d3 from 'd3'; 一.完整代码 import React, { Component } from 'react'; imp

  • docker中搭建overlay 网络实验环境

    为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性.有关 VxLAN 更详细的内容可参考 CloudMan 在<每天5分钟玩转 OpenStack>中的相关章节. Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network.Endp

  • 使用 Docker 搭建 Laravel 本地环境的教程详解

    Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟 docker 比,它占用体积太大,启动速度慢,同时响应速度很慢,现在有了 docker 这种更好的方式,可以轻松方便的搭建整套 PHP 开发环境. 本文就介绍如何使用 docker 搭建 Laravel 本地环境. 安装 docker 首先安装 docker. 克隆 laradock laradock 官方文档: http://

随机推荐