当前位置: 首页 > news >正文

使用容器技术快速入门MinIO

使用容器技术快速入门MinIO

使用容器技术(docker或者podman)快速部署一个单节点单磁盘 MinIO 服务器,用于对MinIO对象存储及其兼容 S3 的 API 层进行早期的开发和评估。

1. 准备工作

  1. 机器已经安装了 Podman 或者 Docker 。

  2. 对用于持久卷的文件夹或驱动器具有读取、写入和删除权限。

2. 容器部署操作步骤

选择一个容器类型以查看创建容器的指南。 提供了适用于 GNU/Linux 和 MacOS,或适用于 Windows 的指南。

2.1 podman部署

使用podman部署,下面步骤适用于rootfull和rootless的容器。

linux/macos:

mkdir -p ~/minio/datapodman run \-p 9000:9000 \-p 9001:9001 \-v ~/minio/data:/data \-e "MINIO_ROOT_USER=ROOTNAME" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \quay.io/minio/minio server /data --console-address ":9001"

windows:

podman run \-p 9000:9000 \-p 9001:9001 \-v D:\minio\data:/data \-e "MINIO_ROOT_USER=ROOTNAME" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \quay.io/minio/minio server /data --console-address ":9001"

说明:

  • podman run 启动容器. 该进程附加到终端会话,并在退出终端时结束。

  • -p 为容器绑定一个本地的端口.

  • -v 将文件路径设置为容器使用的持久卷位置。 当MinIO将数据写入 /data 时,该数据会镜像到本地路径 ~/minio/data , 使其能够在容器重新启动时保持持久化。 您可以设置任何具有读取、写入和删除权限的文件路径来使用。

  • -e 分别为用户名和密码设置环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。如果变量未设置,minio 将默认使用 minioadmin 作为访问密钥,以及 minioadmin 作为秘密密钥。

2.2 docker部署

使用docker部署minio,包括部署rootfull或者rootless类型的容器。

rootfull方式部署
  1. linux或macos
mkdir -p ~/minio/datadocker run \-p 9000:9000 \-p 9001:9001 \--name minio \-v ~/minio/data:/data \-e "MINIO_ROOT_USER=ROOTNAME" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \quay.io/minio/minio server /data --console-address ":9001"
  1. windows
docker run \-p 9000:9000 \-p 9001:9001 \--name minio1 \-v D:\minio\data:/data \-e "MINIO_ROOT_USER=ROOTUSER" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \quay.io/minio/minio server /data --console-address ":9001"

上面的示例以以下方式工作:

  • docker run 启动运行容器。

  • -p 为容器绑定一个本地的端口.

  • -name 为容器创建一个本地的名字。

  • -v 将文件路径设置为容器使用的持久卷位置。 当MinIO将数据写入 /data 时,该数据会镜像到本地路径 ~/minio/data , 使其能够在容器重新启动时保持持久化。 您可以设置任何具有读取、写入和删除权限的文件路径来使用。

  • -e 分别为用户名和密码设置环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。

rootless方式部署
  1. linux/macos
mkdir -p ${HOME}/minio/datadocker run \-p 9000:9000 \-p 9001:9001 \--user $(id -u):$(id -g) \--name minio1 \-e "MINIO_ROOT_USER=ROOTUSER" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \-v ${HOME}/minio/data:/data \quay.io/minio/minio server /data --console-address ":9001"
  1. windows
docker run \-p 9000:9000 \-p 9001:9001 \--name minio1 \--security-opt "credentialspec=file://path/to/file.json"-e "MINIO_ROOT_USER=ROOTUSER" \-e "MINIO_ROOT_PASSWORD=CHANGEME123" \-v D:\data:/data \quay.io/minio/minio server /data --console-address ":9001"

备注

windows下运行前提:Windows Group Managed Service Account(gMSA)已经定义。

上面的示例以以下方式工作:

  • docker run 启动运行容器。

  • -p 为容器绑定一个本地的端口.

  • -name 为容器创建一个本地的名字。

  • --security-opt :windows下运行需要配置。授予通过 credentialspec 文件访问容器的权限,用于 组管理服务帐户 (gMSA)

  • -v 设置文件路径作为容器要使用的持久卷位置。 当MinIO将数据写入 /data 时,实际上是将数据写入本地路径 D:\data 中,这样可以在容器重新启动之间保持持久。 您可以替换 D:\data 为用户具有读取、写入和删除权限的另一个本地文件位置。

  • -e 分别为用户名和密码设置环境变量 MINIO_ROOT_USERMINIO_ROOT_PASSWORD

3. 通过浏览器访问MinIO服务器

启动MinIO服务器后,命令行会生成两个链接地址,例如:Console: http://192.0.2.10:9001 http://127.0.0.1:9001 输出的两个地址,是系统自动根据本地IP生成的地址,这两个地都在没有防火墙和安全策略的情况下都有可能能访问到MinIO控制台。通过docker容器所在的节点+端口即可访问控制台。

监听的 9000 端口主要用于通过API连接时的访问, 当通过浏览器访问 9000 端口时浏览器会自动跳转至控制台。

MinIO Console控制台的登录凭据(用户名和密码)默认认置的环境变量通过 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 修改。

4. FAQ

  1. Centos7 x86机器下运行minio容器(镜像版本:RELEASE.2024-09-13T20-26-02Z)提示“Fatal glibc error: CPU does not support x86-64-v2”。

原因:Docker 镜像中的 glibc 版本要求 CPU 支持 x86-64-v2 指令集,而你的硬件不支持。

参考:https://github.com/minio/minio/issues/18365

解决:降低minio版本,降低为RELEASE.2023-10-25T06-33-25Z或者更低。

5. 参考资料

  1. https://www.minio.org.cn/docs/minio/container/index.html
  2. https://www.minio.org.cn/docs/minio/container/administration/identity-access-management/minio-user-management.html#minio-users-root
  3. https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/manage-serviceaccounts
http://www.lryc.cn/news/438658.html

相关文章:

  • ros2教程(一):使用python和C++发布摄像头原始图像和压缩图像
  • 【自动化测试】UI自动化的分类、如何选择合适的自动化测试工具以及其中appium的设计理念、引擎和引擎如何工作
  • 深入理解Python中的“_,”:一个实用的语法特性
  • Mac清理其他文件:释放存储空间的高效指南
  • html+css+js网页设计 旅游 龙门石窟4个页面
  • CISSP一站通关
  • Golang | Leetcode Golang题解之第406题根据身高重建队列
  • 【我的Android进阶之旅】解决CardView四个圆角有白边的问题
  • 学习笔记JVM篇(四)
  • 828 华为云征文|华为 Flexus 云服务器搭建萤火商城 2.0
  • centos7安装MySQL5.7.44
  • HTTP 请求处理的完整流程到Servlet流程图
  • spingboot中创建简单的WebSocket服务和使用OKHttp创建socket客户端接收数据
  • Redis入门2
  • 嵌入式Linux:信号是什么?
  • 教你搭建一个wifi贴系统
  • C#中的LINQ语句
  • 【C++】——string(模拟实现)
  • c++20 std::format 格式化说明
  • HTB-Unified(log4j2漏洞、MongoDb替换管理员密码)
  • 每天五分钟深度学习PyTorch:不同的神经网络层设置不同的学习率
  • 【渗透测试】——DVWA靶场搭建
  • 国内人工智能产业发展现状及对策研究
  • 完整版订单超时自动取消功能
  • 算法刷题:300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组、1143. 最长公共子序列
  • go 笔记
  • 路由等保测评
  • C# 反射之动态生成dll/exe
  • Rust 所有权 Slices
  • windows 安全与网络管理问题