MinIO

MinIO 是一款基于 Go 语言发开的高性能、分布式的对象存储系统,客户端支持 Java,Net,Python,Javacript,Golang语言。

MinIO 的主要目标是作为私有云对象存储的标准方案,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据、容器和虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T。

如果有搭建私有对象存储服务的需求,MinIO 非常适合。本文将介绍使用 Docker 快速搭建一个 MinIO 服务。

使用 Docker 部署 MinIO 服务

在 Docker Hub 搜索 MinIO 相关镜像,使用这一个:

image-20230222200105348

按照文档的说明,下载镜像:

$ docker pull bitnami/minio
复制代码

查看下载好的镜像:

$ docker images
REPOSITORY            TAG       IMAGE ID       CREATED             SIZE
bitnami/minio         latest    5ce0a7a9aaff   About an hour ago   218MB
复制代码

创建数据卷目录,并提升权限:

$ mkdir -p /minio1/data
$ chmod -R 777 /minio/data
复制代码

使用镜像启动一个 minio 容器:

$ docker run -it -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /minio/data:/data \
-e MINIO_ROOT_USER="minio_root" \
-e MINIO_ROOT_PASSWORD="minio_123456" \
bitnami/minio:latest
复制代码

参数说明:

  • -it:-i 表示以交互模式运行容器,-t 表示为容器重新分配一个伪输入终端,两个参数必须结合使用才能启动一个容器

  • -d:以守护进程方式来启动容器,这也是常用参数,防止阻塞当前窗口

  • -p 9000:9000:MinIO 服务会暴露 9000 端口来对外提供对象访问,也就是通过此端口运行的服务来访问资源

  • -p 9001:9001:MinIO 服务会提供一个可视化管理系统,默认在 9001 端口运行

  • -v /minio/data:/data:挂载数据卷,将 minio 容器内存储的文件映射到宿主机

  • -e MINIO_ROOT_USER="minio_root":设置 root 用户名

  • -e MINIO_ROOT_PASSWORD="minio_123456":设置 root 的密码,长度至少 8 位

在 minio 镜像的文档中提到了:

Make sure that the environment variables MINIO_ROOT_PASSWORD and MINIO_SERVER_SECRET_KEY meet the 8 character minimum length requirement enforced by MinIO(R).

也就是通过环境变量 MINIO_ROOT_PASSWORD 设置 root 用户密码时,长度至少为 8 位,这一点需要注意。

查看 minio 容器的启动日志:

$ docker lgos minio -f
复制代码

可以看到一些关键信息:

API 也就是对外提供资源存取服务的地址,Console 是控制台,也就是一个后台管理系统。RootUser 是通过环境变量设置的 root 用户名,RootPass 是 root 用户密码。创建容器时没有指定这两个环境变量的话,这里会提供两个默认的值,分别是 miniominiosecret

image-20230221200406369

查看 minio 容器的信息:

$ docker ps
复制代码

可以看到容器的 ID,所使用的的镜像,运行状态,端口等信息: image-20230221181724175

开放安全组端口

MinIO 服务用到了 9000 和 9001 端口,如果使用的是云服务器,需要在安全组中开放端口:

image-20230222233453604

访问 MinIO

打开浏览器,访问 域名:9001 或者 IP:9001 ,即可访问 MinIO 服务的管理系统,使用设置好的用户名和密码,登录系统:

image-20230221200630615

进入系统首页,默认展示存储桶列表,由于现在是一个新的服务,所以还是空的:

image-20230221200753982

创建桶

根据提示,点击 “Create a Bucket” 开始创建第一个存储桶:

image-20230221210616562

image-20230221210919612

点击按钮即可完成桶的创建,如下,是刚刚创建的存储桶的卡片展示:

image-20230222010634487

点击存储桶,进入此桶的概要展示页面:

image-20230222182128532

点击访问策略,修改为 Public 公共策略,这样 MinIO 中的文件才能被外界访问:

image-20230222182322786

上传文件

在一个存储桶内,右上角有一个上传的按钮,可以上传文件或者文件夹。

image-20230223001028378

文件上传成功后,点击文件可查看文件的详情:

image-20230223012006399

文件详情右侧提供了一些常用的功能,比如下载,分享和预览,展示文件的基本信息。

上方的路径可以复制下来,拼接上 MinIO 服务的地址,就是此文件的 URL 了。一定要把桶的访问策略改为 Public,否则访问此 URL 将返回 403。

image-20230223012237110

最后

通过 Docker 快速部署了一个简单易用的对象存储服务 MinIO,它提供的用户界面也非常友好。

下篇文章会使用 MinIO 提供的 SDK 接入到代码中,完成一些常用的文件存取操作。


作者:昆吾kw
链接:https://juejin.cn/post/7203258813893345340
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。