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} 注:${}指本处替换为对应值,不带符号 相关文章 Loading... <p>MinIO是一款开源、高性能且专为云原生和容器化环境设计的对象存储解决方案。它不仅轻量级、跨平台,而且高度兼容Amazon S3 API,可以通过MinIO在私有云上实现类似公有云的存储功能。我主要通过MinIO为博客、Memos提供图床的服务。</p> <h2>通过docker-compose部署</h2> <p><code>docker-compose.yml</code>的代码如下:</p> <pre><code class="language-dockerfile">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 </code></pre> <ul> <li><code>ports</code>字段映射了宿主机与容器之间的端口。在这里,我们将容器内部的9000端口暴露给宿主机的9000端口,这是MinIO服务的主要访问端口;同时,9001端口也进行了同样的映射,它是MinIO Web管理控制台的默认端口。</li> <li><code>volumes</code>字段定义了数据卷挂载。这里将宿主机上的<code>/home/minio</code>目录挂载到容器内部的<code>/data</code>路径下,作为MinIO的数据存储位置;同时,当前目录下的<code>config</code>目录被挂载到容器内的<code>/root/.minio</code>,这通常用于存放MinIO的配置文件和其他持久化的元数据。</li> <li><code>environment</code>字段设置环境变量。在这里,设置了MinIO的初始管理员用户及其密码,分别为“root”和“root”。</li> <li><code>command</code>字段覆盖了容器启动时执行的命令。这里指定启动MinIO服务,并且通过<code>--console-address ':9001'</code>参数让Web管理控制台监听所有网络接口的9001端口,然后指向挂载在容器内的 <code>/data</code> 路径作为存储桶的位置。</li> </ul> <p>创建完成之后,通过<code>docker-compose up -d</code>启动</p> <h2>后台配置</h2> <h3>后台登录</h3> <p>通过<code>http://ip:9000</code>访问登录界面,使用<code>root_user</code>和<code>root_password</code>登录。</p> <h3>创建桶</h3> <p>在右侧的Buckets界面点击Create Bucket,需要填写或选择以下参数:</p> <p><img src="https://minio.xuezhao.space/blog/image-20240205213539-60bdy5v.png" alt="image" style=""></p> <ul> <li>Versioning:是版本控制功能。版本控制允许在同一个键(key)下保留同一对象的多个版本。这意味着当上传同名新版本对象时,旧版本不会被覆盖,而是会被保留下来,支持数据恢复和回滚等场景。</li> <li>Object Locking:对象锁定功能防止对象被删除。这对于支持保留策略和满足法律留置需求非常重要。需要注意的是,对象锁定只能在创建桶时启用,一旦锁定,除非解锁,否则对象无法被删除或修改。</li> <li>Quota:配额设置则用于限制桶内可存储的数据总量。这是管理和控制存储资源消耗、避免资源过度使用以及执行存储分配策略的重要工具。</li> <li>Retention:配合版本控制功能使用,开启后可以配置天数,超过该期限的数据才会被删除。</li> </ul> <p>创建完成之后,点击该桶,将访问权限设为Public:</p> <p><img src="https://minio.xuezhao.space/blog/image-20240205213841-y3iv4bu.png" alt="image" style=""></p> <h3>创建Ak和Sk</h3> <p>为了便于管理,本文会先创建user后再使用user的key。如果想要直接使用root用户,可以跳过创建user步骤,直接在左侧Access Keys新建key。</p> <p><img src="https://minio.xuezhao.space/blog/image-20240205215125-rgg03k0.png" alt="image" style=""></p> <p>点击<code>Administrator</code>→<code>Identity</code>→<code>Users</code>,右上角Create User,根据需求动态调整权限。本文用作图床,因此给了读和写的权限。</p> <p><img src="https://minio.xuezhao.space/blog/image-20240205215146-7bjhzc0.png" alt="image" style=""></p> <p>之后,在该User的Service Accounts选项卡中新建Create Access Key,此处需要保存Secret Key。Expiry选项是一个日期,该日期之后key自动失效。</p> <h3>设置Region</h3> <p>设置该选项只是因为不少支持S3的平台,Region是一个必选项,随便填一个保存即可。</p> <p><img src="https://minio.xuezhao.space/blog/image-20240205215523-3c7dk0g.png" alt="image" style=""></p> <h3>API接口:</h3> <p>至此,基本配置已完成,数据有:</p> <ul> <li>Endpoint:<code>http://IP:9000</code></li> <li>region:根据自身填写</li> <li>access key : 用户创建时生成</li> <li>secret key: 用户创建时生成</li> <li>Bucket名称:创建桶填写</li> <li>Url前缀:<code>http://IP:9000/${Bucket}</code></li> </ul> <p>注:<code>${}</code>指本处替换为对应值,不带符号</p> <h2>相关文章</h2> 最后修改:2024 年 02 月 29 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,请随意赞赏
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[...]