38.分布式文件系统 - Minio

文章目录

    • 分布式文件系统
      • MinIO
        • 安装和启动
        • docker中MinIO的使用
          • podman
        • 虚拟机里使用Docker启minio
          • ==配置(成功访问)==
      • Java连接minio

分布式文件系统

MinIO

官网:[https://min.io]

中文:[https://www.minio.org.cn/] [http://docs.minio.org.cn/docs/]

安装和启动

https://min.io/docs/minio/windows/index.html#procedure

  1. 下载:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
  1. 可以把下载好的minio.exe(minio server)添加到环境变量中。

启动minio server

.\minio.exe server C:\minio --console-address :9090

其中,C:\minio是文件保存路径。

  1. 应用连接MinIO server

浏览器连接:http://127.0.0.1:9090

  1. 安装minio client(可选)
https://dl.min.io/client/mc/release/windows-amd64/mc.exe
docker中MinIO的使用

https://min.io/docs/minio/container/index.html#procedure

https://min.io/download#/docker

  1. 在容器中启动minio server
podman run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

或者

sudo docker run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

这个命令使用 podman(一个没有守护进程的Docker的替代方案)来运行MinIO服务器。让我们逐步分析这个命令的各个部分:

  1. podman run: podmanrun 命令用于创建并运行一个新的容器实例。
  2. -p 9000:9000: 这是端口映射参数。它将容器的 9000 端口映射到宿主机的 9000 端口。MinIO默认在 9000 端口上运行,这允许你通过宿主机的 9000 端口访问它。
  3. -p 9001:9001: 与上面的参数类似,但这是为MinIO的新控制台界面(Console)进行的端口映射,该控制台在版本 RELEASE.2021-04-22T15-44-28Z 之后被引入。
  4. minio/minio: 这是要运行的Docker镜像的名称,它包含MinIO的代码。
  5. server /data: 这告诉MinIO以服务器模式运行,并将其数据目录设置为容器内的 /data 路径。
  6. –console-address “:9001”: 这是一个新的参数,它告诉MinIO在哪个地址和端口上启动其控制台服务。在这种情况下,它将在容器的 9001 端口上启动,这与我们之前为它映射的端口匹配。
podman

总之,这个命令使用 podman 在容器中运行MinIO服务,并同时为MinIO的主服务和新的控制台服务设置了端口映射。

Podman(Pod Manager tool)是一个开源的容器运行时工具,它可以在没有守护进程的情况下管理和运行OCI(Open Container Initiative)兼容的容器和容器镜像。这与Docker不同,Docker依赖于一个守护进程来管理和运行容器。

以下是关于Podman的一些关键点:

  1. 无守护进程:与Docker不同,Podman不需要长时间运行的守护进程。这减少了复杂性并提高了安全性。

  2. 兼容Docker CLI:Podman的命令行接口(CLI)是与Docker兼容的,这意味着对于许多常见的操作,你可以使用与Docker相同的命令,只需将docker替换为podman

  3. Rootless运行:Podman允许普通用户(非root用户)运行容器,而不需要特殊的权限或附加的守护进程。这增强了安全性。

  4. Pod的概念:虽然你可以使用Podman来运行单个的容器,但它也引入了"Pod"的概念,其中可以运行多个容器,这与Kubernetes中的Pod概念类似。

  5. 兼容性:Podman容器和镜像是与Docker容器和镜像兼容的,因为它们都遵循OCI规范。

  6. 与其他工具集成:Podman与其他工具,如Buildah(用于构建容器镜像)和Skopeo(用于容器镜像的远程检索和存储),非常好地集成在一起。

  7. 没有中央服务器:由于Podman没有守护进程,因此它不需要中央服务器来运行或管理容器。每个Podman命令都是独立运行的。

  8. 迁移到Kubernetes:Podman可以生成Kubernetes的YAML定义,这有助于将容器化的应用程序从单机迁移到Kubernetes集群。

Podman提供了一种更简洁、更安全的方式来运行和管理容器,特别是对于那些希望避免Docker守护进程或在没有root权限的环境中运行容器的用户。

虚拟机里使用Docker启minio

https://blog.csdn.net/BThinker/article/details/125412751

要在虚拟机中使用Docker启动MinIO服务并让主机可以访问它,您需要执行以下步骤:

  1. 设置虚拟机:

    根据您使用的虚拟化软件(如VirtualBox、VMware等),请确保虚拟机的网络设置是桥接模式或NAT模式,并确保您可以从主机ping通虚拟机。

  2. 安装Docker:

    在虚拟机中,首先安装Docker。您可以按照Docker的官方安装指南来进行安装。

  3. 启动MinIO服务:

    在虚拟机的Docker中启动MinIO服务:

    docker run -p 9000:9000 --name minio-instance \-e "MINIO_ROOT_USER=myaccesskey" \-e "MINIO_ROOT_PASSWORD=mysecretkey" \minio/minio server /data
    

    这将启动一个MinIO实例,并将其9000端口映射到虚拟机的9000端口。

  4. 允许外部访问:

    根据您的虚拟机操作系统,确保其防火墙允许从外部访问9000端口。例如,在使用firewalld的Linux系统上,您可以执行以下命令:

    sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
    sudo firewall-cmd --reload
    
  5. 从主机访问MinIO服务:

    打开浏览器或使用任何客户端,并向虚拟机的IP地址和9000端口发出请求。例如,如果虚拟机的IP地址是192.168.1.100,则访问:

    http://192.168.1.100:9000
    

    使用您为MinIO设置的访问密钥和秘密密钥登录。

  6. 注意事项:

    • 确保虚拟机的网络设置正确,并且您的主机和虚拟机之间没有任何阻止通信的网络策略或防火墙。
    • 如果您使用的是NAT模式,您可能需要进行端口转发,以便从主机访问虚拟机上的服务。

按照上述步骤,您应该可以从主机成功地访问虚拟机中的MinIO服务。

配置(成功访问)
sudo docker run -p 9000:9000 -p 9090:9090 \--net=host \--name minio \-d --restart=always \-e "MINIO_ACCESS_KEY=minioadmin" \-e "MINIO_SECRET_KEY=minioadmin" \-v /home/mkid/software/minio/data:/data \-v /home/mkid/software/minio/config:/root/.minio \minio/minio server \/data --console-address ":9090" -address ":9000"

这个命令使用Docker来启动一个MinIO的实例。让我们逐步分析这个命令:

  1. sudo: 使用超级用户权限来执行后面的命令。

  2. docker run: 使用Docker运行一个新的容器。

  3. -p 9000:9000 -p 9090:9090: 端口映射。这两个参数告诉Docker将容器内的9000和9090端口分别映射到主机的9000和9090端口。

  4. –net=host: 使用主机的网络堆栈。这意味着容器将共享主机的网络名称空间。

  5. –name minio: 为容器指定一个名称,即“minio”。

  6. -d: 以分离模式运行容器,这意味着容器在后台运行。

  7. –restart=always: 如果容器由于任何原因停止,Docker将总是尝试重新启动它。

  8. -e “MINIO_ACCESS_KEY=minioadmin” -e “MINIO_SECRET_KEY=minioadmin”: 设置MinIO的访问和密钥环境变量。

  9. -v /home/mkid/software/minio/data:/data -v /home/mkid/software/minio/config:/root/.minio: 这两个参数定义了卷挂载。它们告诉Docker将主机上的指定目录挂载到容器内的指定路径。这样,数据和配置将在主机上持久化。

  10. minio/minio server: 指定使用的镜像并告诉容器以MinIO服务器模式运行。

  11. /data: 告诉MinIO服务器将数据存储在容器内的/data目录中。

  12. –console-address “:9090”: 指定MinIO控制台应绑定到容器内的9090端口。

  13. -address “:9000”: 指定MinIO服务器应绑定到容器内的9000端口。

总的来说,这个命令启动了一个MinIO服务器的Docker容器实例,并设置了相应的访问密钥、密钥、网络设置和持久化存储。这个实例将使用主机网络,同时也映射了9000和9090这两个端口。

Java连接minio

https://min.io/docs/minio/linux/developers/java/minio-java.html#minio-java-quickstart

上传文件示例FileUploader.java

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;public class FileUploader {public static void main(String[] args)throws IOException, NoSuchAlgorithmException, InvalidKeyException {try {// Create a minioClient with the MinIO server playground, its access key and secret key.MinioClient minioClient =MinioClient.builder().endpoint("https://play.min.io").credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG").build();// Make 'asiatrip' bucket if not exist.boolean found =minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());if (!found) {// Make a new bucket called 'asiatrip'.minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());} else {System.out.println("Bucket 'asiatrip' already exists.");}// Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket// 'asiatrip'.minioClient.uploadObject(UploadObjectArgs.builder().bucket("asiatrip").object("asiaphotos-2015.zip").filename("/home/user/Photos/asiaphotos.zip").build());System.out.println("'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "+ "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");} catch (MinioException e) {System.out.println("Error occurred: " + e);System.out.println("HTTP trace: " + e.httpTrace());}}
}

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

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

相关文章

Guid转换为字符串

在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2128(3.41038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。 (1). GUID&#…

如何避免在抓取Google时被屏蔽?代理IP的7个使用误区

在当今数字化时代,数据采集和网络爬取已成为许多企业和个人必不可少的业务活动。对于爬取搜索引擎数据,特别是Google,使用代理IP是常见的手段。然而,使用代理抓取Google并不是一件轻松的事情,有许多常见的误区可能会导…

【FFmpeg】Filter 过滤器 ① ( FFmpeg 过滤器简介 | 过滤器概念 | 过滤器用法 | 过滤器工作流程 | 过滤器文档 | 过滤器分类 )

文章目录 一、FFmpeg 过滤器 Filter 简介1、FFmpeg 过滤器概念2、FFmpeg 过滤器用法3、FFmpeg 过滤器工作流程4、FFmpeg 过滤器文档 二、FFmpeg 过滤器 分类1、过滤器分类 - 根据处理数据类型分类2、过滤器分类 - 根据编码器位置分类3、过滤器分类 - 根据功能分类 FFmpeg 相关文…

typescript的入门到吐槽:看了typescript,发现前端真的卷,

typescript TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 与 JavaScript 的区别 其实就是对JavaScript的封装,把一个弱类型语言封…

刨析YOLOv8的改进模块

1、YOLOv5回顾 这里粗略回顾一下,这里直接提供YOLOv5的整理的结构图吧:Backbone:CSPDarkNet结构,主要结构思想的体现在C3模块,这里也是梯度分流的主要思想所在的地方;PAN-FPN:双流的FPN,必须香,也必须快,但是量化还是有些需要图优化才可以达到最优的性能,比如cat前后…

淘宝扭蛋机小程序,开启你的惊喜探索之旅!

亲爱的淘宝用户们,我们非常高兴地宣布,全新的淘宝扭蛋机小程序即将上线!这是一款集合了趣味、惊喜与购物乐趣于一体的创新应用,让你在淘宝的海洋里,找到那份独特的快乐。 一、淘宝扭蛋机小程序是什么? 淘…

Qt与MySQL连接

QT连接Mysql数据库(详细成功版)-CSD N博客 我的MySQL是64位的,所以我的Qt的套件也需要是64位的 遇到的问题: (available drivers中已经有QMYSQL QMYSQL3,还是not loaded) QSqlDatabase: QMYS…

RAG 检索的底座:Milvus Cloud向量数据库

在业界实践中,RAG 检索通常与向量数据库密切结合,也催生了基于 ChatGPT + Vector Database + Prompt 的 RAG 解决方案,简称为 CVP 技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs),通过将 LLMs 生成的查询转换为向量,使得 RAG 系统能在向…

团结引擎+OpenHarmony 3 通信

团结引擎和鸿蒙之间通信 因为 ts 并没有像 JAVA 有反射的调用,所以我们必须要像 Web GL 平台一样通过导出的行为告诉引擎到底哪些 ts 的接口可以给 C# 来调用。 1 在 Tuanjie 引擎里 需要一个tsllib文件,用于设置给导出对象 C#使用。就可以直接创建以 …

C++ | Leetcode C++题解之第72题编辑距离

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1, 0));for (int i 0; i < word1.size(); i) dp[i][0] i;for (int j…

大模型的概念与特点

在人工智能的浩瀚星空中&#xff0c;大模型犹如一颗璀璨的明星&#xff0c;引领着技术发展的方向。它们以巨大的参数规模和复杂的计算结构&#xff0c;展现出前所未有的智能潜力。本小节将从大模型的基本概念出发&#xff0c;逐步深入解析其发展历程、特点、分类以及泛化与微调…

实用 Chrome 指令

实用 Chrome 指令 Google Chrome 作为广泛使用的浏览器&#xff0c;提供了丰富的快捷键和命令行指令&#xff0c;提高用户的浏览体验和生产力。以下是一些常用的 Chrome 快捷键和命令行指令&#xff0c;帮助你更高效地使用 Chrome 浏览器。 一、快捷键&#xff08;Windows &a…

【Java基础】字符串的内存情况及应用场景

String 特点 用双引号引起来的一串字符&#xff0c;字符串不变&#xff0c;它们的值在创建后不能被更改String str"hello";存储在堆中的字符串常量池已经定义过的字符串&#xff0c;再次定义时直接使用已有的字符串String类重写了**boolean equals(object obj)**方…

爱丁堡大学出新招,大小语言模型配合节约成本!

在大语言模型的应用中&#xff0c;往往面临着成本和性能权衡的问题。 一方面&#xff0c;大型LLM的参数量极大&#xff08;如70B&#xff09;&#xff0c;每次调用都可能带来更多的成本&#xff0c;而小型LLM&#xff08;如7B&#xff09;的成本则更容易被接受。 另一方面&am…

若依Ruoyi微服务版,通过docker-compose部署流程和部分坑记录

1 各个子微服务&#xff0c;yml文件修改&#xff0c;如nacos地址等等 【有坑&#xff0c;看下面】 2 后端服务打成jar包&#xff0c;mvn package命令 3 前端项目打包 4 docker目录下有个copy.sh文件&#xff0c;运行&#xff0c;将jar 包复制到 docker相应目录下&#xff0c;总…

接收区块链的CCF会议--NDSS 2025 截止7.10 附录用率

会议名称&#xff1a;Network and Distributed System Security Symposium (NDSS) CCF等级&#xff1a;CCF A类学术会议 类别&#xff1a;网络与信息安全 录用率&#xff1a;2024年接收率19.5% Submissions are solicited in, but not limited to, the following areas: Ant…

RabbitMQ:深入理解高性能消息队列

RabbitMQ&#xff1a;深入理解高性能消息队列 文章目录 RabbitMQ&#xff1a;深入理解高性能消息队列前言一、RabbitMQ概述二、RabbitMQ的核心概念三、RabbitMQ的工作原理一、生产者发送消息二、交换机转发消息三、队列存储消息四、消费者接收并处理消息 四、RabbitMQ的使用场景…

DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2,1306310-00-8,是一种重要的多肽化合物

一、试剂信息 名称&#xff1a;DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2CAS号&#xff1a;1306310-00-8结构式&#xff1a; 二、试剂内容 DOTA-Gly-Asp-Tyr-Met-Gly-Trp-Met-Asp-Phe-NH2是一种重要的多肽化合物&#xff0c;其CAS号为1306310-00-8。该多肽包含一个DO…

ICLR 2024 杰出论文开奖了!录用率31%,两篇国内论文获荣誉提名

朋友们&#xff0c;ICLR 2024开奖了&#xff01;5月7日至11日&#xff0c;今年的大会在奥地利维也纳展览会议中心举行。 ICLR&#xff08;国际表征学习大会&#xff09;是公认的深度学习领域国际顶级会议之一&#xff0c;属于CCF A类&#xff0c;主要专注于深度学习和强化学习等…

Unity 浮点数的精度问题

文章目录 前言一、精度问题1、数值不相等2、数值计算不确定3、不同设备计算结果不同 二、解决方法&#xff1a;总结 前言 说到浮点数精度&#xff0c;大家想到的就是double比float的精度高&#xff0c;想要高精度就用double类型。两者最明显的区别就是所占位数的不同&#xff…