MinIO是一款开源、高性能且专为云原生和容器化环境设计的对象存储解决方案。它不仅轻量级、跨平台,而且高度兼容Amazon S3 API,可以通过MinIO在私有云上实现类似公有云的存储功能。我主要通过MinIO为博客、Memos提供图床的服务。
通过docker-compose部署
docker-compose.yml
的代码如下:
version: '3'
services:
minio:
image: minio/minio:latest
container_name: myminio
ports:
- 9000:9000
- 9001:9001
volumes:
- /home/minio:/data
- ./config:/root/.minio
environment:
MINIO_ROOT_USER: "root"
MINIO_ROOT_PASSWORD: "root"
command: server --console-address ':9001' /data
restart: always
privileged: true
-
ports
字段映射了宿主机与容器之间的端口。在这里,我们将容器内部的9000端口暴露给宿主机的9000端口,这是MinIO服务的主要访问端口;同时,9001端口也进行了同样的映射,它是MinIO Web管理控制台的默认端口。 -
volumes
字段定义了数据卷挂载。这里将宿主机上的/home/minio
目录挂载到容器内部的/data
路径下,作为MinIO的数据存储位置;同时,当前目录下的config
目录被挂载到容器内的/root/.minio
,这通常用于存放MinIO的配置文件和其他持久化的元数据。 -
environment
字段设置环境变量。在这里,设置了MinIO的初始管理员用户及其密码,分别为“root”和“root”。 -
command
字段覆盖了容器启动时执行的命令。这里指定启动MinIO服务,并且通过--console-address ':9001'
参数让Web管理控制台监听所有网络接口的9001端口,然后指向挂载在容器内的/data
路径作为存储桶的位置。
创建完成之后,通过docker-compose up -d
启动
后台配置
后台登录
通过http://ip:9000
访问登录界面,使用root_user
和root_password
登录。
创建桶
在右侧的Buckets界面点击Create Bucket,需要填写或选择以下参数:
- Versioning:是版本控制功能。版本控制允许在同一个键(key)下保留同一对象的多个版本。这意味着当上传同名新版本对象时,旧版本不会被覆盖,而是会被保留下来,支持数据恢复和回滚等场景。
- Object Locking:对象锁定功能防止对象被删除。这对于支持保留策略和满足法律留置需求非常重要。需要注意的是,对象锁定只能在创建桶时启用,一旦锁定,除非解锁,否则对象无法被删除或修改。
- Quota:配额设置则用于限制桶内可存储的数据总量。这是管理和控制存储资源消耗、避免资源过度使用以及执行存储分配策略的重要工具。
- Retention:配合版本控制功能使用,开启后可以配置天数,超过该期限的数据才会被删除。
创建完成之后,点击该桶,将访问权限设为Public:
创建Ak和Sk
为了便于管理,本文会先创建user后再使用user的key。如果想要直接使用root用户,可以跳过创建user步骤,直接在左侧Access Keys新建key。
点击Administrator
→Identity
→Users
,右上角Create User,根据需求动态调整权限。本文用作图床,因此给了读和写的权限。
之后,在该User的Service Accounts选项卡中新建Create Access Key,此处需要保存Secret Key。Expiry选项是一个日期,该日期之后key自动失效。
设置Region
设置该选项只是因为不少支持S3的平台,Region是一个必选项,随便填一个保存即可。
API接口:
至此,基本配置已完成,数据有:
- Endpoint:
http://IP:9000
- region:根据自身填写
- access key : 用户创建时生成
- secret key: 用户创建时生成
- Bucket名称:创建桶填写
- Url前缀:
http://IP:9000/${Bucket}
注:${}
指本处替换为对应值,不带符号
6 条评论
[...]云远程对象存储-MinIO 服务部署 - XueZhao 的博客[...]
[...]云远程对象存储-MinIO 服务部署 - XueZhao 的博客[...]
[...]经历了 2023 年的跳槽、换城市、婚礼这些大事之后,本年度的个人主旋律是:保持健身、重拾写作与阅读、突破自我、持续学习。1. 年度目标与达成情况概览主键目标描述目标达成情况健身运动200次(力量训练、其他形式的运动)减脂8kg运动29次(力量训练23次,有氧6次)体重下降1.4kg(70.15kg→68.75kg) 写作周刊50篇技术5篇周刊4篇技术1篇写作流分享1篇||阅读|阅读20本书籍|2[...]
[...]1. 前言去年初入了思源笔记的坑,使用一年体验十分优秀,基本上满足了我对知识库、笔记库的所有诉求。本地优先、优秀的编辑器、强大的扩展性和简单的同步方案,再配合上发展迅速的插件系统,已经有了相当流畅的使用体验。今年年初突然重拾文青博客梦,立下了周更的 flag,在前两周实践的过程中,我发现了两个问题:集中在周日去写当周的周刊会有些吃力,记忆力的确是一日不如一日。多平台发布会有一定的迁移和维护成本。因[...]
[...]1. 前言去年初入了思源笔记的坑,使用一年体验十分优秀,基本上满足了我对知识库、笔记库的所有诉求。本地优先、优秀的编辑器、强大的扩展性和简单的同步方案,再配合上发展迅速的插件系统,已经有了相当流畅的使用体验。今年年初突然重拾文青博客梦,立下了周更的 flag,在前两周实践的过程中,我发现了两个问题:集中在周日去写当周的周刊会有些吃力,记忆力的确是一日不如一日。多平台发布会有一定的迁移和维护成本。因[...]
[...]博客折腾和思考这周在博客里接入了 memos,似乎有这样一个自说自话的版块成了必备,跟风一波。同时碰到了一个问题,memos 需要一个图床来存放附件,而且不支持之前部署的兰空图床。就在我想转国内 s3 服务的时候,绝望的发现不备案用不了国内的服务,索性自己搭一个吧。于是就有了这一篇博文。有了这一整套工具之后,我现在的素材收集、写作、分发输出有了一条特别舒服的工作流,计划春节期间写一下。基于 dai[...]