Docker 创建s3 对象存储服务
Docker 创建s3 对象存储服务
docker 环境不同,可能有些差异
主要是因为 一些服务需要用到s3 存储,因此使用docker 部署服务;
MinIO S3 对象存储具有以下一些优势:
- 简单性与轻量级:部署和维护简单,可以轻松地在各种环境中运行,包括裸金属、Docker 和 Kubernetes 等。
-
- 高性能:专为高吞吐量和低延迟而设计,适合大数据和 AI/ML 等工作负载。在标准硬件上,其读/写速度可达 183GB/s 和 171GB/s,能够作为主要存储层运行,处理各种复杂工作负载,也可作为 Hadoop HDFS 的替代品。 - 分布式对象存储:支持分布式模式,可跨多个节点扩展存储和容错能力,能在多个驱动器或服务器之间划分数据,提供冗余和高可用性。
-
- 数据保护:提供了诸如纠删码(erasure coding)和数据腐化保护(bitrot protection)等功能,以防止数据丢失和损坏。纠删码将对象条带化为具有用户可配置冗余级别的数据和奇偶校验块,可独立修复多个对象,在最大奇偶校验为 N/2 的情况下,仅使用 ((N/2)+1) 个操作驱动器即可进行不间断的读写操作。而对 HighwayHash 算法的优化实现能确保即时捕获和修复损坏的对象,通过在读取时计算哈希并在写入时(从应用程序、网络到内存/驱动器)进行验证来确保端到端的完整性。
-
- 安全性:默认情况下,所有数据通过 TLS 进行加密。此外,还支持服务器端和客户端加密,以及身份验证和授权。它支持多种复杂的服务器端加密方案,使用密钥管理系统(KMS)来支持 SSE-S3,加密对象使用Authenticated Encryption with Associated Data(AEAD)服务器端加密进行防篡改。同时,MinIO 支持身份管理中最先进的标准,与 OpenID 连接兼容提供商以及关键的外部 IDP 供应商集成,访问策略细粒度且高度可配置。
-
- Amazon S3 API 兼容性:完全支持 Amazon S3 的 v2 和 v3 API,这意味着任何基于 S3 的应用程序或工具都能轻松与其集成。若后续想将对象存储迁移到云上,只要云厂商支持 S3 标准,应用程序无需重新开发。 - 开源:MinIO 是完全开源的,遵循 Apache License v2.0 协议,用户可以自由地使用、修改和分发它。
-
- 安装部署维护简单:安装过程类似黑盒,无需深入了解其架构,也不用进行复杂组装,可做到开箱即用。配置选项和变化数量少,系统管理任务接近于零,故障路径也更少。升级通过简单命令即可完成,且无需停机,能大大降低使用和运维成本。 - 支持多语言:提供了几乎所有主流开发语言的 SDK 以及相应文档。
-
- 自带管理界面:服务安装后,可直接通过浏览器登录系统,完成文件夹、文件的管理,方便使用。
-
- 站点复制:扩展了存储桶复制的功能,能使多个 MinIO 部署链接在一起,并让存储桶、对象和身份和访问管理(IAM)设置在所有连接的站点之间保持同步。 不过,MinIO 也存在一些局限性,例如它不支持动态增加节点,目前只能在新增节点后手动重启系统才生效,系统会自动平衡数据。在考虑使用时,需要根据具体的业务需求和场景来评估其是否适合。
MinIO 搭建
官网上有多个平台的安装说明:
官方的下载页面文档并不 完全;
实际的部署还很可能是需要添加一些额外命令:
docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always \
-e "MINIO_ROOT_USER=user" \
-e "MINIO_ROOT_PASSWORD=password" \
-v /Volumes/secDisk/WorkSpace/minio/config:/root/.minio \
-v /Volumes/secDisk/WorkSpace/minio/data:/data \
minio/minio server /data --console-address ":9001"
s3服务数据是以桶 bucket 为单位,我们需要先创建一个bucket ,creat bucket :
version 版本控制, object locking 对象锁定, quota 配额 , 这写在你看不明白啥意思的前提下, 不用开;只需要创建 个名字就好。
-
创建完bucket 之后进入bucket 的设置,可以看到概述中的 访问策略 access police 是私有的, 需要改成对外public;
-
之后到Access Keys 创建一个访问密钥,需要保存好自己的密钥:access key, secret key
-
到配置 Configuration 中设置区域 直接填cn 就可以
自此存储服务基本设置完成;
我们所需要用到的数据如下:
地址:127.0.0.1:9000
bucket name: sec
access key:xxxx
secret key :xxxx
region: cn
备注:
可能遇到的问题:Docker的源 可能访问不到, 近期因为被墙了,要吗需要更换源,要么需要科学手段;