首页 > 其他分享 >Minio在docker中部署

Minio在docker中部署

时间:2024-09-28 12:20:04浏览次数:9  
标签:存储 minio err 部署 9000 docker 数据 Minio

定义与概述

Minio 是一个基于对象存储的开源项目,它与传统的文件存储系统不同,主要用于存储海量的非结构化数据,如图片、视频、文档等。它兼容亚马逊 S3 云存储服务的 API,这意味着如果应用程序是基于 S3 API 开发的存储功能,那么可以很容易地将其迁移到 Minio 上。

功能特点

高性能
Minio 在存储和读取数据方面具有很高的性能。它采用了分布式架构和优化的存储算法,能够实现快速的数据读写操作。例如,在处理大量小文件(如图片)的存储和访问时,Minio 可以高效地利用系统资源,减少延迟。
可扩展性
可以轻松地通过添加更多的服务器或存储节点来扩展存储容量。它支持横向扩展,能够适应不断增长的数据存储需求。例如,一个小型企业最初使用 Minio 存储少量的产品图片,随着业务的增长和产品数量的增加,可以简单地添加存储节点来满足存储需求。
数据冗余和高可用性
Minio 支持数据的冗余存储,通过纠删码(Erasure - Coding)技术,可以在保证数据可靠性的同时,减少存储冗余。例如,将数据存储在多个节点上,并且即使部分节点出现故障,也能通过纠删码技术恢复数据,确保数据的高可用性。
安全性
提供了多种安全机制,包括访问控制(通过设置用户和权限)、数据加密(在存储和传输过程中对数据进行加密)等。例如,用户可以为不同的存储桶(Bucket)设置不同的访问权限,只允许授权的用户访问和操作特定的数据。

应用场景

云存储服务提供商
可以作为云存储服务提供商的后端存储系统,为用户提供对象存储服务。它的兼容性和高性能使得它可以很好地集成到云存储服务中,并且支持多租户模式,方便为不同用户提供独立的存储服务。
企业数据存储
企业可以使用 Minio 存储各种类型的数据,如企业文档、备份数据、监控视频等。它可以作为企业内部的存储解决方案,帮助企业更好地管理和保护数据。
容器存储
在容器化环境(如 Kubernetes)中,Minio 可以作为容器存储解决方案,为容器化应用提供持久化存储。例如,存储容器化应用产生的日志文件、配置文件等。

与其他存储系统的比较

与传统的文件存储系统(如 NFS、CIFS)相比,Minio 更适合存储海量的非结构化数据,并且具有更好的扩展性和性能。而与其他对象存储系统相比,Minio 具有开源、轻量级、易于部署和使用等优点。例如,在开发测试环境中,Minio 可以快速搭建并用于存储测试数据,而不需要复杂的配置和昂贵的硬件支持。

Minio在docker上部署

拉取镜像源
docker pull minio/minio

配置挂载目录和上传文件目录

C:\Users\31967>mkdir  minio\config
C:\Users\31967>mkdir  minio\data

创建容器并运行

docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -v C:\Users\31967\minio:/data -v C:\Users\31967\minio\config:/root/.minio minio/minio server /data --console-address ":9001" -address ":9000"

访问9000端口
登录
用户 minio
密码 minio123
[图片]

新建Bucket
点击左侧Buckets
为Bucket取一个合适的名字
[图片]

[图片]

代码连接minio并上传文件

package main

import (
    "context"
    "log"

    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
    // 创建 MinIO 客户端
    endPoint := "localhost:9000"
    accessKeyID := "minio"
    secretAccessKey := "minio123"
    useSSL := false

    minioClient, err := minio.New(endPoint, &minio.Options{
       Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
       Secure: useSSL,
    })
    if err != nil {
       log.Fatalln(err)
    }

    // 要上传的文件路径和目标存储桶名称及对象名称
    localFilePath := "C:\\Users\\图片\\20.jpg"  //自己本地图片路径
    bucketName := "text"
    objectName := "1"    //存储的图片名称

    // 上传文件
    _, err = minioClient.FPutObject(context.Background(), bucketName, objectName, localFilePath, minio.PutObjectOptions{})
    if err != nil {
       log.Fatalln(err)
    }

    log.Printf("文件 %s 成功上传到 MinIO 存储桶 %s 中的对象 %s", localFilePath, bucketName, objectName)
}

[图片]

标签:存储,minio,err,部署,9000,docker,数据,Minio
From: https://blog.csdn.net/wang_4212/article/details/142614033

相关文章