Docker搭建FastDFS + Ngnix图片文件服务器

news2024/10/9 12:32:10

安装教程

一、环境与备件安装(安装Docker)

  1. 更新系统:首先,确保系统已更新到最新版本。

    a. 更新Ubuntu系统命令:

    sudo apt update
    sudo apt upgrade
    

    b. 更新CentOS系统命令:

    sudo yum update
    
  2. 安装依赖项: 安装所需的软件包以支持Docker的安装过程

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 设置稳定的Docker仓库: 使用以下命令设置Docker稳定版仓库

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  4. 安装Docker引擎: 使用yum包管理器安装Docker引擎:

    sudo yum install docker-ce docker-ce-cli containerd.io
    
  5. 启动Docker服务: 安装完成后,启动Docker服务并设置为在系统启动时自动启动:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  6. 验证安装: 运行以下命令验证Docker是否成功安装:
    如果Docker安装成功,您应该能够看到Docker引擎的版本信息。

    sudo docker --version
    

二、安装FastDFS

  1. 搜索镜像

    docker search fastdfs
    

    操作样例如下:在这里插入图片描述

  2. 安装镜像

    docker pull delron/fastdfs
    
  3. 创建挂载目录

    mkdir /var/fdfs
    mkdir /var/fdfs/tracker
    mkdir /var/fdfs/storage
    mkdir /var/fdfs/nginx
    chmod 777 tracker storage nginx
    

    操作样例如下:在这里插入图片描述

  4. 启动 tracker 容器

    docker run --privileged=true -dit --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
    

docker run: 运行 Docker 容器的命令。

具体参数含义如下:

  • --privileged=true: 这个参数指定容器应该拥有所有的 Linux Capabilities,这样它就可以执行一些特权操作,如挂载文件系统等。这在某些情况下是必要的,但也可能会增加安全风险,因为容器可以访问主机的所有资源。

  • -dit: 这些是三个独立的参数:

    • -d:在后台运行容器(detached 模式)。
    • -i:保持标准输入 (stdin) 打开,即使没有附加到容器上。
    • -t:分配一个伪终端 (pseudo-TTY)。
  • --network=host: 这个参数指定容器应该使用宿主机的网络命名空间,这意味着容器将共享宿主机的网络栈,能够直接访问宿主机的网络接口。这在某些情况下可能会提高性能,但也可能增加安全风险。

  • --name tracker: 这个参数指定容器的名称为 “tracker”,这样你就可以使用这个名称来管理容器,而不必依赖于容器的 ID。

  • -v /var/fdfs/tracker:/var/fdfs: 这个参数用于挂载主机文件系统上的目录到容器内部。具体来说,/var/fdfs/tracker 目录将被挂载到容器内部的 /var/fdfs 目录下。这对于将数据持久化保存在主机上是很有用的。

  • delron/fastdfs: 这是要运行的 Docker 镜像的名称。在这种情况下,它是一个名为 delron/fastdfs 的镜像,该镜像可能包含 FastDFS 分布式文件系统的组件。

    操作样例如下:在这里插入图片描述

  1. 启动 storage 容器

    docker run --privileged=true -dit --network=host --name storage -e TRACKER_SERVER=[Tracker服务器的IP地址]:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
    

docker run: 运行 Docker 容器的命令。

具体参数含义如下:

  • --privileged=true: 这个参数指定容器应该拥有所有的 Linux Capabilities,这样它就可以执行一些特权操作,如挂载文件系统等。这在某些情况下是必要的,但也可能会增加安全风险,因为容器可以访问主机的所有资源。

  • -dit: 这些是三个独立的参数:

    • -d:在后台运行容器(detached 模式)。
    • -i:保持标准输入 (stdin) 打开,即使没有附加到容器上。
    • -t:分配一个伪终端 (pseudo-TTY)。
  • --network=host: 这个参数指定容器应该使用宿主机的网络命名空间,这意味着容器将共享宿主机的网络栈,能够直接访问宿主机的网络接口。这在某些情况下可能会提高性能,但也可能增加安全风险。

  • --name storage: 这个参数指定容器的名称为 “storage”,这样你就可以使用这个名称来管理容器,而不必依赖于容器的 ID。

  • -e TRACKER_SERVER=[Tracker服务器的IP地址]:22122: 这个参数用于设置环境变量 TRACKER_SERVER,该变量指定了 Tracker 服务器的 IP 地址和端口号。FastDFS 需要知道 Tracker 服务器的位置以进行文件上传和下载等操作。

  • -v /var/fdfs/storage:/var/fdfs: 这个参数用于挂载主机文件系统上的目录到容器内部。具体来说,/var/fdfs/storage 目录将被挂载到容器内部的 /var/fdfs 目录下。这对于将数据持久化保存在主机上是很有用的。

  • -e GROUP_NAME=group1: 这个参数设置了环境变量 GROUP_NAME,指定了 FastDFS 存储节点所属的组名。这是用于标识存储节点的一个重要设置。

  • delron/fastdfs: 这是要运行的 Docker 镜像的名称。在这种情况下,它是一个名为 delron/fastdfs 的镜像,该镜像可能包含 FastDFS 分布式文件系统的组件。

    操作样例如下:在这里插入图片描述

  1. 确认storage 与 tracker 启动完成

    docker ps
    

三、修改配置

  1. 确认 client.conf 文件

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

    需要修改 client.conf 文件中的 tracker_server=192.168.0.197:22122,修改为实际tracker配置一致。
    在这里插入图片描述

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

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

    在这里插入图片描述
    在这里插入图片描述
    修改后保存,然后将修改后的文件替换回去
    在这里插入图片描述

四、测试验证是否成功

  1. 进入 tracker 容器中

    docker exec -it tracker bash
    
  2. 随便创建一个 txt 文件

    echo "niceyoo" > niceyoo.txt
    
  3. 通过 fdfs_upload_file 命令将 niceyoo.txt 文件上传至服务器

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

    成功的话,会返回一串 url后缀,group1/M00/00/00/CsygG2YCbzmAKv3uAAAACBfWGpM725.txt
    将返回的一串url,拼接上 IP与端口:http://10.204.160.27:8888/group1/M00/00/00/CsygG2YCbzmAKv3uAAAACBfWGpM725.txt
    在这里插入图片描述
    浏览器访问成功,即可

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1554644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剑指Offer题目笔记20(在数组范围内二分查找)

面试题72: 问题: ​ 输入一个非负整数,计算它的平方根。 解决方案: 使用二分查找。一个数x的平方根一定小于或等于x,同时,除了0之外的所有非负整数的平方根都大于等于1,故该数的平方根在1到x…

AI大模型引领金融创新变革与实践【文末送书-46】

文章目录 AI大模型的定义与特点AI大模型在金融领域的应用 01 大模型在金融领域的 5 个典型应用场景02 大模型在金融领域应用所面临的风险及其防范03 AIGC 技术的科林格里奇困境04 金融机构使用 AIGC 技术的 4 条可能路径AIGC重塑金融:AI大模型驱动的金融变革与实践…

.NET CORE使用Redis分布式锁续命(续期)问题

结合上一期 .NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案(.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案-CSDN博客)。有的小伙伴私信说如果锁内锁定的程序或者资源未在上锁时间内执行完,造成的使用资源冲突,需要如何解决。本…

Spring 源码调试问题 ( List.of(“bin“, “build“, “out“); )

Spring 源码调试问题 文章目录 Spring 源码调试问题一、问题描述二、解决方案 一、问题描述 错误&#xff1a;springframework\buildSrc\src\main\java\org\springframework\build\CheckstyleConventions.java:68: 错误: 找不到符号 List<String> buildFolders List.of…

OpenHarmony无人机MAVSDK开源库适配方案分享

MAVSDK 是 PX4 开源团队贡献的基于 MavLink 通信协议的用于无人机应用开发的 SDK&#xff0c;支持多种语言如 C/C、python、Java 等。通常用于无人机间、地面站与通信设备的消息传输。 MAVLink 是一种非常轻量级的消息传递协议&#xff0c;用于与无人机&#xff08;以及机载无…

【Unity】TextMeshPro富文本

启用富文本 在Unity里&#xff0c;如果需要使用富文本&#xff0c;首先需要开启Rich Text 如果不开启Rich Text&#xff0c;就会在UI上显示富文本代码 1.粗体 <b>Game</b> Over2.斜体 <i>Game</i> Over3.下划线 <u>Game</u> Over4…

6个常用的界面原型设计工具,新手小白看!

界面原型设计是现代设计师必备的技能之一。界面原型是设计数字产品或应用程序的重要步骤&#xff0c;将概念转化为具体的互动界面。对于初学者小白来说&#xff0c;选择一款易于使用、功能强大的界面原型设计工具非常重要。本文将介绍 10 种常用的界面原型设计工具&#xff0c;…

基于8086CPU和8255并行接口扩展系统设计

**单片机设计介绍&#xff0c;基于8086CPU和8255并行接口扩展系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086CPU和8255并行接口扩展系统设计的主要目的是通过8255并行接口芯片实现对外部设备的并行接口扩展&…

162.乐理基础-和声大调、旋律大调

内容参考于&#xff1a; 三分钟音乐社 上一个内容&#xff1a;161.音程、和弦板块总结、重点、建议 首先需要回忆一下18.调式、自然大调式&#xff08;C大调、D大调。。。&#xff09;与19.音阶是什么、有什么用&#xff0c;在18.调式、自然大调式&#xff08;C大调、D大调。…

代码随想录训练营Day37:● 738.单调递增的数字 ● 968.监控二叉树 ● 总结

738.单调递增的数字 题目链接 https://leetcode.cn/problems/monotone-increasing-digits/description/ 题目描述 思路 从后往前遍历数字的每一位&#xff0c;如果前一位大于后一位&#xff0c;则将其减一&#xff0c;后边的一位取 i-9 中最大的 解答的两点疑惑&#xff1a;…

uniapp 使用命令行创建vue3 ts 项目

命令行创建 uni-app 项目&#xff1a; vue3 ts 版 npx degit dcloudio/uni-preset-vue#vite-ts 项目名称注意 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 如果下载失败&#xff0c;请去gitee下载 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts…

2020年30米二级分类北京市土地利用数据

引言 北京市省土地利用数据产品是指基于Landsat TM/ETM/OLI遥感影像&#xff0c;采用遥感信息提取方法&#xff0c;并结合野外实测&#xff0c;以及参照国内外现有的土地利用/土地覆盖分类体系&#xff0c;经过波段选择及融合&#xff0c;图像几何校正及配准并对图像进行增强处…

上采样技术在语义分割中的应用

目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术&#xff0c;可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为&#xff1a;…

年轻力壮,副业当道:推荐6个热门小副业

#下班后的年轻人第二事业风潮# 热门话题你加入了吗&#xff1f; 如今&#xff0c;年轻人早已摒弃“懒散”的标签&#xff0c;全身心投入到“事业拼搏”之中。然而&#xff0c;自主创业的高投入与风险&#xff0c;让许多年轻人望而却步。于是&#xff0c;副业成为了他们触手可及…

Vue3基础笔记(2)事件

一.事件处理 1.内联事件处理器 <button v-on:click"count">count1</button> 直接将事件以表达式的方式书写~ 每次单击可以完成自增1的操作~ 2.方法事件处理器 <button click"addcount(啦啦啦~)">count2</button> 如上&…

4、Cocos Creator 动画系统

目录 1、Clip 参数 2、动画编辑器 3、基本操作 更改时间轴缩放比例 移动显示区域 更改当前选中的时间轴节点 播放 / 暂停动画 修改 clip 属性 快捷键 4、模拟实验 5、动画事件 6、注意事项 参考 Animation 组件是节点上的一个组件。Clip 动画剪辑就是一份动画的声…

【CTA动画】制作全记录 笔记

3Dxchange的使用 让图片跳舞 导入&#xff1a;I:\安装包\#动画开发\test\跳舞 model(includeTPose).fbx 转成非标准角色 手动点击骨骼&#xff0c;然后点击人物骨骼&#xff0c;选择00_t-pose 绿灯了就可以转换了&#xff0c;记得启用。 上面的自定义可以先选择3DS 转换后…

Stream2Graph论文翻译

Stream2Graph: Dynamic Knowledge Graph for Online Learning Applied in Large-scale Network Abstract 知识图谱(KG)是用于存储某个领域(医疗保健、金融、电子商务、ITOps等)中的知识的有价值的信息来源。大多数工业KG本质上是动态的&#xff0c;因为它们定期更新流数据(客…

如何准备科学海报

科学会议上的海报展示可以为早期职业研究人员提供宝贵的机会来练习他们的沟通技巧&#xff0c;获得有关他们研究的反馈&#xff0c;并扩大他们的网络。“通过与其他研究人员一对一地讨论我的工作&#xff0c;[我发现]我可以确定哪些工作做得好&#xff0c;哪些需要改进&#xf…

LQR的横向控制与算法仿真实现

文章目录 1. 引言2. 车辆运动学线性离散模型3. LQR求解4. 算法和仿真实现 1. 引言 在现代控制理论的领域中&#xff0c;线性二次型调节器&#xff08;Linear Quadratic Regulator&#xff0c;简称LQR&#xff09;被广泛认可为一种高效的优化控制方法。LQR的核心优势在于其能力…