MinIO 是一款基于 Go 语言发开的高性能、分布式的对象存储系统,客户端支持 Java,Net,Python,Javacript,Golang语言。
MinIO 的主要目标是作为私有云对象存储的标准方案,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据、容器和虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T。
如果有搭建私有对象存储服务的需求,MinIO 非常适合。本文将介绍使用 Docker 快速搭建一个 MinIO 服务。
使用 Docker 部署 MinIO 服务
在 Docker Hub 搜索 MinIO 相关镜像,使用这一个:
按照文档的说明,下载镜像:
$ 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
andMINIO_SERVER_SECRET_KEY
meet the 8 character minimum length requirement enforced by MinIO®.
也就是通过环境变量 MINIO_ROOT_PASSWORD
设置 root 用户密码时,长度至少为 8 位,这一点需要注意。
查看 minio 容器的启动日志:
$ docker logs minio -f
可以看到一些关键信息:
API
也就是对外提供资源存取服务的地址,Console
是控制台,也就是一个后台管理系统。RootUser
是通过环境变量设置的 root 用户名,RootPass
是 root 用户密码。创建容器时没有指定这两个环境变量的话,这里会提供两个默认的值,分别是 minio
和 miniosecret
。
查看 minio 容器的信息:
$ docker ps
可以看到容器的 ID,所使用的的镜像,运行状态,端口等信息:
开放安全组端口
MinIO 服务用到了 9000 和 9001 端口,如果使用的是云服务器,需要在安全组中开放端口:
访问 MinIO
打开浏览器,访问 域名:9001
或者 IP:9001
,即可访问 MinIO 服务的管理系统,使用设置好的用户名和密码,登录系统:
进入系统首页,默认展示存储桶列表,由于现在是一个新的服务,所以还是空的:
创建桶
根据提示,点击 “Create a Bucket” 开始创建第一个存储桶:
点击按钮即可完成桶的创建,如下,是刚刚创建的存储桶的卡片展示:
点击存储桶,进入此桶的概要展示页面:
点击访问策略,修改为 Public 公共策略,这样 MinIO 中的文件才能被外界访问:
上传文件
在一个存储桶内,右上角有一个上传的按钮,可以上传文件或者文件夹。
文件上传成功后,点击文件可查看文件的详情:
文件详情右侧提供了一些常用的功能,比如下载,分享和预览,展示文件的基本信息。
上方的路径可以复制下来,拼接上 MinIO 服务的地址,就是此文件的 URL 了。一定要把桶的访问策略改为 Public,否则访问此 URL 将返回 403。