Docker 部署 Minio 对象存储服务器

文章目录

  • Github
  • 官网
  • 文档
  • 简介
  • docker
  • docker-compose.yml
  • mc 客户端
  • mc 基础命令
  • Golang 示例
    • 创建 test 账号密钥
    • 文件上传示例

Github

  • https://github.com/minio/minio

官网

  • https://min.io/
  • https://www.minio.org.cn/

文档

  • https://www.minio.org.cn/docs/minio/kubernetes/upstream/

简介

Minio是一个开源的对象存储服务器,可以存储大量的非结构化数据,例如图片、视频、日志文件、备份等。Minio是一个轻量级的应用程序,可以在各种环境中运行,包括公共云、私有云和混合云。Minio提供了一个简单的REST API,可以轻松地将数据存储到Minio服务器中,并从Minio服务器中检索数据。Minio还提供了一些高级功能,例如数据加密、访问控制、事件通知和版本控制,可以帮助用户更好地管理和保护数据。

Minio的应用场景非常广泛,可以用于各种不同的用例。例如,Minio可以用于构建云原生应用程序,存储容器镜像和日志文件。Minio还可以用于构建数据湖,存储和管理大量的非结构化数据。此外,Minio还可以用于构建备份和灾难恢复解决方案,以及存储和管理多媒体内容。总之,Minio是一个非常灵活和强大的对象存储服务器,可以满足各种不同的存储需求。

docker

  • https://min.io/download?license=agpl&platform=docker

  • 镜像:https://hub.docker.com/r/minio/minio

docker pull minio/minio:latest
docker run --name minio -p 9000:9000 -p 9001:9001 \
minio/minio:latest server /data --console-address ":9001"
  • 查看 server 可选项
docker exec -it minio minio server --help

docker-compose.yml

# 创建缩主机目录
mkdir minio && cd minio
mkdir data certs logs
services:minio:image: minio/minio:latestcontainer_name: miniorestart: alwaysports:- "9000:9000"- "9001:9001"environment:MINIO_ROOT_USER: "admin"MINIO_ROOT_PASSWORD: "AmtkaWV3a3Bsb2lkd"volumes:- ./minio/data:/data# TLS/SSL 证书目录- ./minio/certs:/root/.minio/certs- ./minio/logs:/var/log/miniocommand: ['server', '/data', '--log-dir', '/var/log/minio', '--console-address', ':9001']
docker-compose up -d minio
  • http://192.168.0.60:9001/login

注意: 访问缩主机IP地址,而非 127.0.0.1 地址。

在这里插入图片描述

mc 客户端

  • https://min.io/docs/minio/linux/reference/minio-mc.html#id3
# Mac
brew install minio/stable/mc
mc -h
  • 快速身份验证并连接到MinIO
mc alias set local http://192.168.0.60:9000 admin 'AmtkaWV3a3Bsb2lkd'
mc admin info local

在这里插入图片描述

mc 基础命令

  • 创建一个新的存储桶
mc mb local/ability-bucket
  • 列出存储桶或对象
mc ls local
  • 删除一个存储桶
mc rb local/ability-bucket
  • 复制对象
mc cp ./object.txt local/ability-bucket/

在这里插入图片描述

  • 删除对象
mc rm local/ability-bucket/object.txt
  • 在存储桶中查找对象
mc find local/ability-bucket/ --name "*.txt"

在这里插入图片描述

  • 同步本地目录和远程存储桶
mc mirror ./local/dir local/ability-bucket
  • 显示对象内容
mc cat local/ability-bucket/object.txt
  • 生成一个临时共享链接
mc share download local/ability-bucket/object.txt

Golang 示例

  • 官方示例:https://minio.org.cn/docs/minio/linux/developers/minio-drivers.html

创建 test 账号密钥

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件上传示例

此示例代码连接到对象存储服务器,创建一个bucket,并将文件上传到bucket。

go get github.com/minio/minio-go/v7
package mainimport ("context""log""github.com/minio/minio-go/v7""github.com/minio/minio-go/v7/pkg/credentials"
)func main() {ctx := context.Background()endpoint := "192.168.0.60:9000"accessKeyID := "cyv75namOYc38Lo0Colk"secretAccessKey := "ve4qri1acmgfiQgpIsAfgvsRSErdukE1ntWTjD0H"useSSL := false// Initialize minio client object.minioClient, err := minio.New(endpoint, &minio.Options{Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),Secure: useSSL,})if err != nil {log.Fatalln(err)}// Make a new bucket called testbucket.bucketName := "testbucket"location := "us-east-1"err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location})if err != nil {// Check to see if we already own this bucket (which happens if you run this twice)exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)if errBucketExists == nil && exists {log.Printf("We already own %s\n", bucketName)} else {log.Fatalln(err)}} else {log.Printf("Successfully created %s\n", bucketName)}// Upload the test file// Change the value of filePath if the file is in another locationobjectName := "testdata"filePath := "./testdata/testdata"contentType := "application/octet-stream"// Upload the test file with FPutObjectinfo, err := minioClient.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType})if err != nil {log.Fatalln(err)}log.Printf("Successfully uploaded %s of size %d\n", objectName, info.Size)
}
  • 输出
2024/07/02 16:33:16 Successfully created testbucket
2024/07/02 16:33:16 Successfully uploaded testdata of size 14

Minio 控制台可以查看到刚创建的 testbucket

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

解决跨域问题(vite、axios/koa)

两种方法选其一即可 一、后端koa设置中间件 app.use(async (ctx, next)> {ctx.set(Access-Control-Allow-Origin, *);ctx.set(Access-Control-Allow-Headers, Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild);ctx.set(Access-C…

hamibot 学习

1.参考文档: https://blog.csdn.net/zxl0428/article/details/1285318731.参考官网 快速入手步骤:注册,安装客户端,添加设备,开发脚本,运行脚本 https://hamibot.com/guide1.安装客户端 2.添加设备 …

【Python网络爬虫案例】python爬虫之模拟登录

🔗 运行环境:PYTHON 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

如何为董事会会议做准备?【会前会后】

召开一场富有成效的董事会会议需要花费大量的时间,可能要进行数周的沟通和拉扯,这些对董事做好充分准备至关重要。真实情况下的董事会会议往往需要大量的时间来准备,使用董事会会议工具能有效节省董事会会议准备时间、提高效率,保…

java常见集合容器的扩容增量

java常见集合容器的扩容增量 汇总: ArrayList:默认初始容量为10,扩容为原容量的1.5倍加1 Vector:默认初始容量为10,扩容为原容量的2倍 HashSet:默认初始容量为16,扩容为原容量的2倍&#xff0…

SQL游标的原理与在数据库操作中的应用

SQL游标的原理与在数据库操作中的应用 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 引言 在关系型数据库中,SQL游标(Cursor&#x…

【nginx】nginx配置websocket

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

MySQL5.7安装初始化错误解决方案

问题背景 今天在给公司配数据库环境时,第一次报initializing database 数据库初始化错误? 起初没管以为是安装软件原因,然后就出现以下错误:如下图 点开log,我们观察日志会发现 无法识别的参数 ‘mysqlx_port=0.0’,???,官方的安装程序还能出这问题?

LabVIEW风机跑合监控系统

开发了一种基于LabVIEW的风机跑合监控系统,提高风机测试的效率和安全性。系统通过自动控制风机的启停、实时监控电流和功率数据,并具有过流保护功能,有效减少了人工操作和安全隐患,提升了工业设备测试的自动化和智能化水平。 项目…

仓库管理系统25--数据导出

原创不易&#xff0c;打字不易&#xff0c;截图不易&#xff0c;多多点赞&#xff0c;送人玫瑰&#xff0c;留有余香&#xff0c;财务自由明日实现 1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.DataExportView"xmlns"http://schemas.microsof…

全年免费!环信发布出海创新版,助力泛娱乐创业者扬帆起航

目前&#xff0c;以陌生人社交、直播、语聊、电商等热门场景为代表的社交泛娱乐出海正发展得如火如荼&#xff0c;成为企业新的增长曲线。但随着出海企业增多&#xff0c;海外市场争夺、资源竞争与技术博弈也愈加激烈。 为了让更多创业者与创新者获得支持&#xff0c;快速高效…

onCreateOptionsMenu()和onOptionsItemSelected()的使用

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 创建Menu资源 在《第一行代码 Android》中的3.2.5 在Activity中使用Menu章节中,根据书中指引,在res/目录下创建menu目录,然后在menu目录下创建main.xml的布局资源. menu&#xff1a;必选…

PPT文件中,母版视图与修改权限的区别

在PPT&#xff08;PowerPoint&#xff09;制作过程中&#xff0c;母版视图和修改权限是两个重要的概念&#xff0c;它们各自在演示文稿的编辑、管理和分发中扮演着不同的角色。本文将从定义、功能、使用场景及区别等方面详细探讨PPT母版视图与修改权限的异同。 PPT母版视图 定…

解锁EggJS魅力:为什么它成为企业级应用首选?

在Node.js生态中&#xff0c;阿里开源的EggJS框架自问世以来&#xff0c;便凭借其针对企业级应用的深度定制和高度可扩展性&#xff0c;赢得了开发者们的广泛赞誉。本文将从设计理念、核心特性、实战应用以及与其他框架的对比四个方面&#xff0c;深入探讨EggJS的优势与不足&am…

六西格玛培训:不只是理论,更是实战中的利器——张驰咨询

六西格玛作为一种强大的流程改进和质量管理工具&#xff0c;其应用范围已经远远超出了传统制造业的界限&#xff0c;逐步渗透到金融业、互联网以及新能源等前沿领域。以下张驰咨询将结合之前的分析&#xff0c;展示六西格玛培训在这些行业中的成功案例及其带来的深远影响。 制造…

(2024)docker-compose实战 (4)部署redis

前言 本次仅搭建单一的redis服务.如果不确定镜像的配置文件目录, 可以通过 docker inspect 镜像名 来查看具体的配置信息.使用docker-compose.yaml时, 请自行去除注释. 目录结构 web/ /web/目录 | ├─ redis/ redis目录 | ├─ conf/ 配置文件目录 |…

Keysight 是德 EXR604A 实时示波器

Keysight 是德 EXR604A 实时示波器 EXR604A Infiniium EXR 系列示波器&#xff1a;6 GHz&#xff0c;4 通道 全部 4 个通道均可提供 6 GHz 带宽&#xff0c;强大的 8 合 1 仪器&#xff0c;出色的硬件加速绘图功能&#xff0c;并且支持全面升级&#xff0c;可升级到 8 个通道…

ERP系统中有哪些模块?有哪些具体实现方案呢?

对于许多初次接触ERP系统的企业来说&#xff0c;可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块&#xff0c;需要明确的是&#xff0c;ERP系统是一个庞大的系统&#xff0c;包含了多个模块&#xff0c;每个模块都有其独特的功能和作用。这些模块涵…

如何用python语言从json数据中获取自己想过的值?

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

【408考点之数据结构】图的遍历

图的遍历 图的遍历是指从图中的某个顶点出发&#xff0c;按照一定的规则访问图中所有顶点&#xff0c;并使每个顶点仅被访问一次。图的遍历包括两种主要方法&#xff1a;深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08;BFS&#xff09;。这两种遍历方法在…