Docker 部署 Minio 对象存储服务器

news2024/11/18 23:44:34

文章目录

  • 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:latest
    container_name: minio
    restart: always
    ports:
      - "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/minio
    command: ['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 main

import (
	"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 location
	objectName := "testdata"
	filePath := "./testdata/testdata"
	contentType := "application/octet-stream"

	// Upload the test file with FPutObject
	info, 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.coloradmin.cn/o/1890754.html

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

相关文章

摸爬滚打半年,我是如何从小白进阶到渗透测试工程师

前言 工作也好几年了,在这摸爬滚打中,遇到了服务器被黑,网站被人DDOS攻击,数据库被篡改等等。服务器也不是你说不让人上就不让人上的,所以IT安全这个话题还是比较沉重的,涉及的东西很多,只有你…

个人博客|PHP源码|支持多国语言切换

一. 前言 今天小编给大家带来了一款可学习,可商用的,支持多国语言的个人博客网站源码,支持二开,无加密。此博客相当简洁,也适合海外。详细界面和功能见下面视频演示。 如果您正好有此需求源码,请联系小编…

SSM学习4:spring整合mybatis、spring整合Junit

spring整合mybatis 之前的内容是有service层&#xff08;业务实现层&#xff09;、dao层&#xff08;操作数据库&#xff09;&#xff0c;现在新添加一个domain&#xff08;与业务相关的实体类&#xff09; 依赖配置 pom.xml <?xml version"1.0" encoding&quo…

一篇文章搞懂弹性云服务器和轻量云服务器的区别

前言 在众多的云服务器类型中&#xff0c;弹性云服务器和轻量云服务器因其各自的特点和优势&#xff0c;受到了广大用户的青睐。那么&#xff0c;这两者之间到底有哪些区别呢&#xff1f;本文将为您详细解析。 弹性云服务器&#xff1a;灵活多变的计算资源池 弹性云服务器&…

鸿蒙开发设备管理:【@ohos.sensor (传感器)】

传感器 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import sensor from ohos.sensor;sensor.on ACCELEROMETER on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: C…

04-ArcGIS For JavaScript的可视域分析功能

文章目录 综述代码实现代码解析结果 综述 在数字孪生或者实景三维的项目中&#xff0c;视频融合和可视域分析&#xff0c;一直都是热点问题。Cesium中&#xff0c;支持对阴影的后处理操作&#xff0c;通过重新编写GLSL代码就能实现视域和视频融合的功能。ArcGIS之前支持的可视…

Vue+Xterm.js+WebSocket+JSch实现Web Shell终端

一、需求 在系统中使用Web Shell连接集群的登录节点 二、实现 前端使用Vue&#xff0c;WebSocket实现前后端通信&#xff0c;后端使用JSch ssh通讯包。 1. 前端核心代码 <template><div class"shell-container"><div id"shell"/>&l…

day01-切片和索引

day01-切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改&#xff0c;与 Python 中list 的切片操作一样。 ndarray数组可以基于0-n的下标进行索引 注意&#xff0c;数组切片并不像列表切片会重新开辟一片空间&#xff0c;而是地址引用&#xff0c;需要使用.copy()…

【Threejs进阶教程-着色器篇】2. Uniform的基本用法与Uniform的调试

Uniform的基本用法与Uniform的调试 关于本Shader教程优化上一篇的效果优化光栅栏高度让透明度和颜色变的更平滑pow()函数借助数学工具更好的理解函数 Unifoms简介编写uniforms修改片元着色器代码借助lil.gui调试uniforms使用uniform控制颜色继续在uniforms添加颜色在着色器中接…

动态住宅代理IP的3个优点

在大数据时代的背景下&#xff0c;代理IP成为了很多企业顺利开展的重要工具。代理IP地址可以分为住宅代理IP地址和数据中心代理IP地址。选择住宅代理IP的好处是可以实现真正的高匿名性&#xff0c;而使用数据中心代理IP可能会暴露自己使用代理的情况。 住宅代理IP是指互联网服务…

JavaScript中location对象的主要属性和方法

属性 href&#xff1a;获取或设置整个URL。protocol&#xff1a;获取URL的协议部分&#xff0c;如"http:"或"https:"。host&#xff1a;获取URL的主机名&#xff08;包括端口号&#xff0c;如果有的话&#xff09;。hostname&#xff1a;获取URL的主机名&…

Android studio 打包低版本的Android项目报错

一、报错内容 Execution failed for task :app:packageRelease. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade> com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "…

【Portswigger 学院】路径遍历

路径遍历&#xff08;Path traversal&#xff09;又称目录遍历&#xff08;Directory traversal&#xff09;&#xff0c;允许攻击者通过应用程序读取或写入服务器上的任意文件&#xff0c;例如读取应用程序源代码和数据、凭证和操作系统文件&#xff0c;或写入应用程序所访问或…

10 Posix API与网络协议栈

POSIX概念 POSIX是由IEEE指定的一系列标准,用于澄清和统一Unix-y操作系统提供的应用程序编程接口(以及辅助问题,如命令行shell实用程序),当您编写程序以依赖POSIX标准时,您可以非常肯定能够轻松地将它们移植到大量的Unix衍生产品系列中(包括Linux,但不限于此!)。 如…

奇瑞被曝强制加班,“896”成常态且没有加班费

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 7 月 2 日消息&#xff0c;一位认证为“奇瑞员工”的网友近期发帖引发热议&#xff0c;奇瑞汽车内部存在强制加班行为&#xff0c;每周加班时长需大于 20 小时并且没有加班费&#xff0c;仅补贴 10 元…

人口萎缩,韩国釜山“进入消失阶段”

KlipC报道&#xff1a;调查显示&#xff0c;随着低生育率和人口老化&#xff0c;釜山人口逐渐萎缩&#xff0c;韩国第二大城市釜山显现出“进入消失阶段”的迹象。 据悉&#xff0c;“消失风险指数”是将20岁至39岁女性人口总数除以65岁及以上人口得到的数值。当该指数大于1.5…

第T3周:天气识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前期工作 本文将采用CNN实现多云、下雨、晴、日出四种天气状态的识别。较上篇文章&#xff0c;本文为了增加模型的泛化能力&#xff0c;新增了Dropout层并…

【计算机体系结构】缓存的false sharing

在介绍缓存的false sharing之前&#xff0c;本文先介绍一下多核系统中缓存一致性是如何维护的。 目前主流的多核系统中的缓存一致性协议是MESI协议及其衍生协议。 MESI协议 MESI协议的4种状态 MESI协议有4种状态。MESI是4种状态的首字母缩写&#xff0c;缓存行的4种状态分别…

snap和apt的区别简单了解

Linux中没有tree命令的时候提示安装的时候出现了两个命令&#xff0c;简单看了看两者有何区别&#xff08;一般用apt就可以了&#xff09;&#xff1a; sudo snap install tree 和 sudo apt install tree 这两个命令都是用来安装 tree 命令行工具的&#xff0c;但它们使用的是不…

uniapp零基础入门Vue3组合式API语法版本开发咸虾米壁纸项目实战

嗨&#xff0c;大家好&#xff0c;我是爱搞知识的咸虾米。 今天给大家带来的是零基础入门uniapp&#xff0c;课程采用的是最新的Vue3组合式API版本&#xff0c;22年发布的uniappVue2版本获得了官方推荐&#xff0c;有很多同学等着我这个vue3版本的那&#xff0c;如果没有学过vu…