Docker安装MinIO对象存储中间件

MinIO 是一个高性能、分布式的对象存储系统,兼容 Amazon S3 云存储服务协议,广泛应用于企业存储、大数据、机器学习和容器化应用等领域。以下是详细介绍:

核心特点

  • 兼容 S3 API :全面兼容 Amazon S3 API,这意味着使用 S3 API 的应用程序几乎无需修改即可与 MinIO 兼容,方便用户迁移和集成。

  • 高性能 :MinIO 支持分布式架构,可将多个服务器组合成一个存储池,提供高吞吐量和低延迟的存储服务,适用于高性能计算和大数据处理场景。

  • 分布式架构 :支持在多个节点上进行分布式存储,能够充分利用多台机器的资源,实现存储容量和性能的水平扩展。

  • 安全性 :支持多种身份验证和授权机制,包括 S3 签名验证、主动式目录服务(Active Directory)和轻量级目录访问协议(LDAP)等,还支持数据加密、多因素身份验证等安全功能,确保数据的安全性和隐私性。

  • 易用性 :提供丰富的客户端工具和管理界面,方便用户进行存储操作和管理。同时,其安装和配置过程简单,便于快速部署和使用。

搭建过程

环境准备

1、安装Docker

2、创建维护用户和存储目录

如果不使用Docker的 Rootless部署,可以不创建普通用户,在docker run启动时,也无需--user指定运行用户。

bash 复制代码
useradd minio && usermod -a -G docker minio
su - minio && mkdir -p ${HOME}/minio/data

启动MinIO容器

bash 复制代码
docker run -d --name my-minio \
   -p 9000:9000 \
   -p 9001:9001 \
   --user $(id -u):$(id -g) \
   quay.io/minio/minio server /data --console-address ":9001"

注意:

1、MinIO默认情况下在随机端口上运行控制台,如果您希望选择特定的端口,

请使用--console-address来选择特定的接口和端口。

2、不指定用户名密码,可以通过docker logs从日志中查看用户名密码,默认:minioadmin:minioadmin

其他额外启动项

指定用户名密码

-e "MINIO_ROOT_USER=admin" \

-e "MINIO_ROOT_PASSWORD=PASSWORD" \

配置console语言为中文。

虽并未对console web页做国际化,仍然显示英文;但是,部分配置项会以中文展示了。

-e "MINIO_CONSOLE_LOCALE=zh_CN" \

以本地目录配置存储持久化

-v ${HOME}/minio/data:/data \

配置https访问所需的证书目录

**注:**这里不指定,默认使用~/.minio/certs目录下的证书(该目录下默认为空,即使用http访问)

-v ${HOME}/minio/certs:/certs \

基本启动参数

  • docker run -d --name my-minio3 :以分离模式(后台运行)启动一个名为 my-minio3 的 Docker 容器。

  • -p 9000:9000 -p 9001:9001 :将宿主机的 9000 端口和 9001 端口分别映射到容器内部的 9000 端口和 9001 端口。9000 用于对象存储服务,9001 用于 MinIO Console。

  • --user $(id -u):$(id -g) :以当前用户的用户 ID 和组 ID 运行容器,确保容器内的文件和目录权限与宿主机用户匹配,避免权限问题。

环境变量配置

  • -e "MINIO_ROOT_USER=admin" :设置 MinIO 的根用户账号为 admin

  • -e "MINIO_ROOT_PASSWORD=你的密码" :设置 MinIO 的根用户密码。

  • -e "MINIO_CONSOLE_LOCALE=zh_CN" :设置 MinIO Console 的语言为中文(简体)。

卷挂载

  • -v ${HOME}/minio/data:/data :将宿主机用户主目录下的 minio/data 目录挂载到容器内的 /data 目录,用于存储 MinIO 的数据。

  • -v ${HOME}/minio/certs:/certs :将宿主机用户主目录下的 minio/certs 目录挂载到容器内的 /certs 目录,用于提供 TLS 证书和私钥。

MinIO 服务配置

  • quay.io/minio/minio server --certs-dir /certs /data --console-address ":9001" :指定使用的 MinIO 镜像,并配置 MinIO 服务。

    • server :表示以服务器模式运行 MinIO。

    • --certs-dir /certs :指定证书目录为容器内的 /certs,用于启用 HTTPS。

    • /data :指定 MinIO 数据存储目录为容器内的 /data

    • --console-address ":9001" :设置 MinIO Console 的监听地址为容器内部的 9001 端口。

最终启动命令

bash 复制代码
docker run -d --name my-minio3 \
   -p 9000:9000 \
   -p 9001:9001 \
   --user $(id -u):$(id -g) \
   -e "MINIO_ROOT_USER=admin" \
   -e "MINIO_ROOT_PASSWORD=PASSWORD" \
   -e "MINIO_CONSOLE_LOCALE=zh_CN" \
   -v ${HOME}/minio/data:/data \
   -v ${HOME}/minio/certs:/certs \
   quay.io/minio/minio server --certs-dir /certs /data --console-address ":9001"

如果只启动S3 API的话,要禁用console,可以如下启动:

bash 复制代码
docker run -d --name my-minio2 \
   -p 9000:9000 \
   --user $(id -u):$(id -g) \
   -e "MINIO_BROWSER=off" \
   -v ${HOME}/minio/data:/data \
   quay.io/minio/minio server /data

验证

使用MinIO控制台进行测试

MinIO服务器带有一个嵌入式的基于web的对象浏览器。

浏览器访问:http://IP:9000

用户名密码登录后

相关推荐
云游1 小时前
K8s:离线部署Kubernetes1.26.12及采用外部Harbor
云原生·容器·kubernetes
W@Lucky1 小时前
谷粒商城篇章13--P340-P360--k8s/KubeSphere【高可用集群篇一】
云原生·容器·kubernetes·devops
Spring-wind3 小时前
【docker】将已有mysql脚本导入镜像内使用
mysql·docker·容器
步、步、为营4 小时前
.NET 8.0 中有哪些新的变化?
容器·kubernetes·.net
Java陈序员5 小时前
告别命令行!一个开源的 Docker 容器可视化管理工具!
docker·容器·go
David爱编程6 小时前
深入理解K8s的Volume生命周期管理
云原生·容器·kubernetes
高频交易dragon17 小时前
freqtrade在docker运行一个dryrun实例
运维·docker·容器
cherishSpring17 小时前
docker run快速启动一个容器
运维·docker·容器
元气满满的热码式1 天前
修复WSL安装失败(错误: 0x80248014 )并安装K8S
云原生·容器·kubernetes
芥子沫1 天前
Docker 应用&数据备份、迁移方案
运维·docker·容器