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.mfbz.cn/a/601314.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

meshlab: pymeshlab保存物体的横截面(compute planar section)

一、关于环境 请参考:pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 # pymeshlab需要导入,其一般被命名为ml import pymeshlab as ml# 本案例所…

C++ | Leetcode C++题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m matrix.size(), n matrix[0].size();int low 0, high m * n - 1;while (low < high) {int mid (high - low) / 2 l…

YOLOv8的训练、验证、预测及导出[目标检测实践篇]

这一部分内容主要介绍如何使用YOLOv8训练自己的数据集&#xff0c;并进行验证、预测及导出&#xff0c;采用代码和指令的两种方式&#xff0c;参考自官方文档&#xff1a;Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理&#xff0c;只需要把流程跑通就行&#xff0c;…

白色或类白色的粉末/固体,DOTA-Ala-Ala-Tyr-COOH,是一种具有特定氨基酸序列的多肽,具有良好的稳定性和溶解性

一、试剂信息 英文名&#xff1a;DOTA-Ala-Ala-Tyr-COOH&#xff0c;DOTA-AAY-OHCAS号&#xff1a;N/A分子式&#xff1a;C31H47N7O12分子量&#xff1a;709.74结构式&#xff1a; 纯度标准&#xff1a;≥95%包装规格&#xff1a;1g&#xff0c;5g&#xff0c;10g&#xff08…

Selenium——获取元素和操纵元素的方法

1、获取元素的方法 1、通过id获取 element wd.find_element(By.ID,"id")2、通过classname获取 elements wd.find_elements_by_class_name("plant") for element in elements:print(element.text)3、通过tagname获取元素 elements wd.find_elements_…

SpringBoot2 仿B站高性能前端+后端项目(wanjie)

SpringBoot2 仿B站高性能前端后端项目(完结) Spring Boot 2 仿B站高性能前端后端项目&#xff1a;打造高效、稳定、可扩展的应用 在当今的互联网时期&#xff0c;网站的性能、稳定性和可扩展性成为了权衡一个项目胜利与否的关键要素。本文将引见如何运用 Spring Boot 2 构建一…

AIGC-3D数字人技术:高效助推各行业数字化水平升级

从“互联网”到“人工智能”&#xff0c;数字员工作为一种全新的交互形式&#xff0c;对企业有着重要的作用&#xff0c;企业、品牌通过数字人的AI语音交互、AI播报等核心功能&#xff0c;可以有效推动企业提升数字水平。 作为3D、AI虚拟数字人技术服务商及方案提供商&#xff…

鸿蒙内核源码分析(工作模式篇) | CPU的七种工作模式

本篇说清楚CPU的工作模式 工作模式(Working mode) 也叫操作模式&#xff08;Operating mode&#xff09;又叫处理器模式&#xff08;Processor mode&#xff09;&#xff0c;是 CPU 运行的重要参数&#xff0c;决定着处理器的工作方式&#xff0c;比如如何裁决特权级别和报告异…

【IP:Internet Protocol,子网(Subnets),IPv6:动机,层次编址:路由聚集(rout aggregation)】

文章目录 IP&#xff1a;Internet Protocol互联网的的网络层IP分片和重组&#xff08;Fragmentation & Reassembly&#xff09;IP编址&#xff1a;引论子网&#xff08;Subnets&#xff09;特殊IP地址IP 编址: CIDR子网掩码&#xff08;Subnet mask&#xff09;转发表和转发…

【verilog-语法】编译命令( compiler directives )

一、前言 编译器指令的范围是从它的出现的点延伸到处理的所有文件&#xff0c;直到另一个编译器指令取代它或处理结束。编所有的编译命令都有重音符 " "引出。在IEEE std1364-2005中共介绍了19条编译命令&#xff0c;这19条命令又可分为12组命令进行独立或组合使用…

Unity射击游戏开发教程:(12)使用后处理

后处理 后期处理是向您的游戏场景添加一个或多个滤镜,确实可以为您的游戏提供精美的外观。在本文中,我们将讨论如何在 Unity 中设置后处理系统,从那里您可以探索和试验 Unity 提供的所有过滤器。 首先,我们需要从包管理器添加后处理器堆栈。包管理器是 Unity 产品的集合,…

【LAMMPS学习】八、基础知识(5.11)磁自旋

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

1:测试驱动

前领科技DAY1 1&#xff1a;测试驱动的步骤&#xff1a;下载芯片厂商的sdk&#xff0c;下载jlinke&#xff0c;在jlinke打印信息.jlinke的控制地址在D:\ruanjian\GR_RING\projects\ring\Keil_5\Listings这个目录下 但是jlinke一般都是可以自动检测的 2&#xff1a;目录结构对应…

深入剖析Tomcat(七) 日志记录器

在看原书第六章之前&#xff0c;一直觉得Tomcat记日志的架构可能是个“有点东西”的东西。在看了第六章之后呢&#xff0c;额… 就这&#xff1f;不甘心的我又翻了翻logback与新版tomcat的源码&#xff0c;额…&#xff0c;日志架构原来也没那么神秘。本篇文章先过一遍原书内容…

计算机视觉——OpenCV Otsu阈值法原理及实现

算法简介 Otsu阈值法&#xff0c;也被称为大津算法&#xff0c;是一种在图像处理中广泛使用的自动阈值分割技术。这种方法由日本学者大津展之于1979年提出&#xff0c;旨在根据图像的灰度直方图来自动选择最佳全局阈值。Otsu阈值法的核心思想是最小化类内方差或最大化类间方差…

Leetcode167两数之和

题目链接&#xff1a; 167两数之和 解题思路: 缩减空间法 // 167 两数之和 缩减搜索空间方法 vector<int> twoSum(vector<int>& numbers, int target) {int i 0;int j numbers.size() - 1;while (i < j){int tmp numbers[i] numbers[j];if (tmp tar…

【PX4-AutoPilot教程-TIPS】MAVROS2运行px4.launch文件报错ValueError无法启动的解决方法

MAVROS2运行px4.launch文件报错ValueError无法启动的解决方法 问题描述解决方法 环境&#xff1a; Ubuntu &#xff1a;20.04 LTS ROS &#xff1a;ROS2 Foxy PX4 &#xff1a;1.13.0 问题描述 在使用命令ros2 launch mavros px4.launch命令启动MAVROS2与PX4之间的连接时报…

python从0开始学习(五)

目录 前言 1、顺序结构 2、选择结构 2.1双分支结构 2.2多分枝结构 2.3嵌套使用 2.4多个条件的链接 总结 前言 在上篇文章中&#xff0c;我们学习了python中的运算符&#xff0c;本篇文章继续往下讲解。本篇文章主要讲解程序的组织结构。 1、顺序结构 顺序结构是程序按照…

一篇迟来的未来展望的博客

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 老师布置的任务&#xff0c;叫写一篇博客&…

elementplus

npm install element-plus --save下载 按需引入 自动引入 npm install -D unplugin-vue-components unplugin-auto-import
最新文章