1 简介

MinIO 是一个开源的对象存储服务器,与 Amazon S3 兼容。它的设计目标是为大规模数据工作负载提供简单、安全和高性能的存储。

以下是 MinIO 的一些主要特性:高性能,S3 兼容,安全性,可扩展性,开源,简单性。

MinIO 可以在各种环境中运行,包括裸机、虚拟机、容器化环境、私有云和公有云等。这使得 MinIO 成为一个非常灵活的对象存储解决方案,可以适应各种不同的部署需求。

简单来说,这是又小又好用的服务,可以在 300M 以内进行部署,并包含友好的 Web 界面。它的内部存储格式也非常直观。

2 部署

2.1 下拉镜像

1
$ docker pull bitnami/minio:latest

image 大小约 270M,是个轻量级的服务。

2.2 启动镜像

1
$ docker run --rm --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=root -e MINIO_ROOT_PASSWORD=密码 -v /exports/tmp/minio/:/bitnami/minio/data -it bitnami/minio:latest

浏览器中输入 http://localhost:9001 打开设置界面,并使用上述的用户名和密码进行登录。

可以尝试在界面上进行增删查改操作,其结构和内容与映射目录中的结构完全一致。需要注意的是,本地的文件在远程端是一个目录,而目录中的内容则是文件的实际内容。

3 python 访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MinioFileManager:
BUCKET_NAME = 'test' # 存储桶

def __init__(self, minio_host, minio_access_key, minio_secret_key):
self.client = minio.Minio(minio_host, minio_access_key,
minio_secret_key, secure=False)

def save_file(self, filename, path):
self.client.fput_object(MinioFileManager.BUCKET_NAME, filename, path)

def get_file(self, filename, path):
self.client.fget_object(MinioFileManager.BUCKET_NAME, filename, path)

def delete_file(self, filename):
self.client.remove_object(MinioFileManager.BUCKET_NAME, filename)

manager = filemanager.MinioFileManager('192.168.10.108:9000', 'minio', 'miniosecret')
manager.get_file('失误_笔记.txt', '/tmp/test.txt')
manager.save_file('失误_笔记_2.txt', '/tmp/test.txt')
manager.delete_file('失误_笔记_2.txt')