Docker部署MinIO单节点单硬盘(支持S3协议)
原文在CEPD论坛首发:
https://bbs.imbhj.com/t/topic/149
MinIO介绍
MinIO是一种基于Apache License v2.0开源协议的对象存储服务,它与亚马逊S3云存储服务接口兼容。MinIO特别适合存储大量非结构化数据,如图片、视频、日志文件、备份数据以及容器或虚拟机镜像。对象文件的大小可以从几KB到最大5TB不等。MinIO是一个轻量级服务,可以轻松地与其他应用程序集成,例如NodeJS、Redis或MySQL。
MinIO的优势:
- 开发文档全面:MinIO提供了完善的官方文档,支持开发者快速学习和部署。
- 高性能:MinIO是目前速度最快的对象存储服务器之一,读写速度在标准硬件上可达183 GB/s和171 GB/s。它可以作为主存储层处理各种复杂工作负载,如Spark、Presto、TensorFlow、H2O.ai等,并可作为Hadoop HDFS的替代品。
- 支持全面:MinIO支持多种主流开发语言,并提供SDK以便快速集成。
- AWS S3标准兼容:MinIO采用了S3兼容协议,并且是第一个支持S3 Select的产品,得到了750多个组织的认可。
- 安装部署简单:MinIO的安装部署过程简单快捷,Linux环境下仅需下载一个二进制文件并执行即可。
- 开放全部源代码 + 企业级支持:MinIO100%开放源代码,用户可以自由使用和集成MinIO,进行创新和修改。
- 容器化集成方便:MinIO提供了与k8s、etcd、docker等主流容器化技术的深度集成方案。
- 管理界面支持:MinIO安装后,可以通过浏览器直接管理文件和文件夹。
部署
前提条件:
- 安装好了Docker
- 具有对应的目录、文件、磁盘的完全访问权
在想要部署的目录中,首先创建一个存放数据的文件夹data:
mkdir ./data
创建一个容器启动脚本minio_start.sh:
#!/bin/bash
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
--name minio_server \
-v ./data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=xxxxxxxxx" \
-e "MINIO_BROWSER_REDIRECT_URL=https://xxx.xxx" \
quay.io/minio/minio server /data --console-address ":9001"
设置好管理员用户名、密码和反代的域名,如果不想要域名,直接使用IP+端口访问也可以不设置 MINIO_BROWSER_REDIRECT_URL
这个环境变量,把这一行删掉即可,
然后增加权限,执行即可:
chmod +x ./minio_start.sh
./minio_start.sh
如果修改了参数或者配置的时候要重新执行,直接运行这个脚本会提示容器已存在可以如下操作:
## 查看容器ID
docker ps -a
## 停止旧容器
docker stop <id>
## 删除旧容器(不会删除数据文件夹的)
docker rm <id>
## 重新执行脚本
./minio_start.sh
如果没有root权限,可以把脚本更改为:
#!/bin/bash
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
--user $(id -u):$(id -g) \
--name minio1 \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=xxxxxxxxx" \
-e "MINIO_BROWSER_REDIRECT_URL=https://xxx.xxx" \
-v ./data:/data \
quay.io/minio/minio server /data --console-address ":9001"
配置反向代理
将准备好的域名的 @
、 www
、 api
的A记录都解析到服务器上,然后设置反向代理,将 @
、 www
都代理到minio的WebUI端口 9001
,将 api
代理到 9000
的api端口即可
这是我自己的习惯,你也可以和我的不一样。
配置好https证书,即可通过 https://xxx.xxx
直接访问到minio后台,使用环境变量中设置的用户名和密码进行访问。
使用
首先来到 Buckets 页面,点击创建,设置好名字,配额(如果需要的话),
然后来到 Access Keys 页面,点击创建,设置好名字(只能纯字母),然后在弹出来的页面记得下载下来,或者复制到其他地方保存,因为密钥只会出现一次!!!
然后就可以通过生成的ID和密钥进行使用啦,比如在1panel里创建一个备份账号:
或者使用其他支持OSS访问或者S3协议访问的客户端就可以了,访问地址就是 https://xxx.xxx/buckets名字/
,包括作为Discourse的附件和备份地址都可以的,我这里只是哪来备份数据使用。
参考链接
MinIO Object Storage for Container — MinIO Object Storage for Container