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

使用容器技术快速入门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/data

podman 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/data

docker 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/data

docker 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.kler.cn/news/306276.html

相关文章:

  • Python 中 Locale.Error: Unsupported Locale Setting 错误
  • iCAM06: A refined image appearance model for HDR image rendering
  • 分享Vue3.5最新变化
  • C++高性能线性代数库Armadillo入门
  • 【算法专题】穷举vs暴搜vs深搜vs回溯vs剪枝
  • [Linux]:进程间通信(上)
  • 【重学 MySQL】二十九、函数的理解
  • 通过Docker实现openGauss的快速容器化安装
  • 基于Keil软件实现修改主频(江协科技HAL库)
  • STM32的IAP原理及其操作流程分析
  • C++20中支持的非类型模板参数
  • QT多线程编程(基础概念以及示例)
  • 【深度学习】搞懂卷积神经网络(一)
  • HTML贪吃蛇游戏
  • 【Spring Boot】SpringBoot自动装配-Import
  • CenterPoint-KITTI:环境配置、模型训练、效果展示;KITTI 3D 目标检测数据集下载
  • 寄存器的位数据调测方法(摩尔信使MThings)
  • Axure科技感大屏系统设计:智慧农场管理平台
  • SCRM电商管理后台Axure高保真原型 源文件
  • 浅谈为什么数据库要用B树
  • 爬虫全网抓取
  • 大众萨克森:SNP助力汽车制造智能化,实现SAP S/4HANA系统成功升级
  • 店群合一模式下的社区团购新发展——结合链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序源码
  • LeetCode509:斐波那契数列
  • 4.C_数据结构_队列
  • Java异常处理详细讲解及常见面试问题
  • 无人机巡检:突破传统局限,引领智能监测新时代
  • java 网络编程URL与URLConnection的使用
  • 深入解析 Apache Ranger
  • 电容的不同材质对应的温度范围