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

Docker 部署 MinIO 对象存储服务

Docker 部署 MinIO 对象存储服务

  • 前言
  • 一、准备工作
    • 1. 安装 Docker
    • 2. 确认服务器架构
  • 二、设置 MinIO 容器的目录结构
  • 三、启动一个临时的 MinIO 容器来获取配置文件
  • 四、复制 MinIO 配置文件到本地目录
  • 五、删除临时 MinIO 容器
  • 六、创建并运行 MinIO 容器,挂载本地目录
  • 七、修改 MinIO 配置文件
  • 八、端口配置:Host 网络模式 vs Port 映射模式
  • 九、查看日志和检查容器状态
  • 十、访问 MinIO 服务
  • 十一、MinIO 联邦集群
  • 总结


前言

MinIO 是一个高性能、开源的对象存储服务,基于 Apache License v2.0 协议,兼容 Amazon S3 API。作为轻量级存储解决方案,MinIO 提供了卓越的性能,适合存储大容量的非结构化数据,如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。其文件大小可从几千字节到最大 5T 不等,且完全免费。

核心优势

  • 高性能:支持大规模数据存储与访问,处理速度快。
  • 开源与兼容:完全开源,兼容 S3 接口,便于集成。
  • 适用场景:适合静态文件存储、数据备份、归档管理等。
  • 部署简单:通过 Docker 快速部署,减少安装和配置复杂度。
  • 免费使用:无需付费,适合开发者和小型企业使用。

通过 Docker 部署 MinIO,你可以迅速启动并配置服务,简化了安装过程,同时保持极高的性能和可扩展性。

本篇文章将指导你通过 Docker 快速搭建 MinIO 环境,并讲解如何修改配置文件和定制化你的存储设置。

在这里插入图片描述


一、准备工作

1. 安装 Docker

首先,确保你的系统上已经安装了 Docker。

Linux上进行Docker安装有两种方式:

  1. Docker自动化安装
  2. Docker手动安装

可以根据该文章的步骤进行安装:https://blog.csdn.net/weixin_44876263/article/details/136714078?spm=1001.2014.3001.5502

2. 确认服务器架构

minio运行错误

错误:minio安装 运行后显示:Fatal glibc error: CPU does not support x86-64-v2解决方案:使用 /minio/minio:${release}-cpuv1    例如:minio/minio:RELEASE.2024-02-17T01-15-57Z-cpuv1

在选择 MinIO 镜像版本时,需要确认服务器的硬件架构。 则你可以通过以下命令查看服务器的 CPU 架构

uname -m
  • 如果返回 x86_64,则是标准的 x86-64 架构。
  • 如果返回 x86-64-v2,则是支持特定优化的架构版本。

根据你的架构,选择对应的 MinIO 镜像版本:

  • x86_64 架构: minio/minio:RELEASE.2023-04-28T18-11-17Z-cpuv1
  • x86-64-v2 架构: minio/minio:RELEASE.2024-02-17T01-15-57Z

二、设置 MinIO 容器的目录结构

为了便于管理,我们首先创建一个目录结构,用于存放 MinIO 数据和配置文件。

# 安装路径
DIR="/opt/docker/minio"
DOCKER_NAME="docker-minio"# 创建目录结构
mkdir -p "$DIR/data"
mkdir -p "$DIR/docker/config"
  • data:存放 MinIO 的数据文件。
  • config:存放 MinIO 配置文件。

三、启动一个临时的 MinIO 容器来获取配置文件

我们需要一个基础的 MinIO 配置文件,Docker 官方镜像已内置了默认配置。为了方便地获取并修改这些配置文件,我们首先启动一个临时的 MinIO 容器。

# 启动一个临时的 MinIO 容器来复制配置文件
docker run --name minio_test -p 9000:9000 -d minio/minio server /data

这个命令会启动一个 minio/minio 容器,并将其 9000 端口映射到宿主机的 9000 端口。我们可以通过访问 http://localhost:9000 来查看 MinIO 服务。

四、复制 MinIO 配置文件到本地目录

接下来,我们将容器内的 MinIO 配置文件复制到本地,以便进行自定义修改。使用以下命令将配置文件复制到宿主机的 $DIR/docker/config 目录中:

# 复制 MinIO 配置文件到本地目录
docker cp minio_test:/root/.minio "$DIR/docker/config"

这样,我们就获取到了 MinIO 的配置文件,并可以根据需要进行修改。

五、删除临时 MinIO 容器

复制完配置文件后,我们不再需要这个临时的 MinIO 容器,因此可以将其删除:

# 删除临时 MinIO 容器
docker rm -f minio_test

六、创建并运行 MinIO 容器,挂载本地目录

现在,我们可以使用自定义的配置文件来启动一个持久化的 MinIO 容器。通过将本地目录挂载到容器中,我们可以确保配置文件、日志和数据文件持久化存储在宿主机上。

以下是启动 MinIO 容器的命令:

docker run -d \--restart=always \--name "$DOCKER_NAME" \--network host \-e "MINIO_ROOT_USER=minio" \-e "MINIO_ROOT_PASSWORD=minio123456" \-v "$DIR/data:/data/minio" \-v "$DIR/docker/config:/root/.minio" \minio/minio server /data/minio

解释各个参数:

  • -d:后台运行容器。
  • --restart=always:容器在崩溃或系统重启后自动重启。
  • --name "$DOCKER_NAME":容器的名称为 docker-minio
  • --network host:容器将使用宿主机的网络栈。
  • -e "MINIO_ROOT_USER=minio":设置 MinIO 的根用户。
  • -e "MINIO_ROOT_PASSWORD=minio123456":设置 MinIO 的根密码。
  • -v "$DIR/data:/data/minio":挂载数据目录到容器中。
  • -v "$DIR/docker/config:/root/.minio":挂载配置目录到容器中。

七、修改 MinIO 配置文件

如果你需要修改 MinIO 的配置,可以直接修改 $DIR/docker/config 目录下的配置文件。MinIO 支持通过环境变量配置许多功能,例如设置根用户、密码、访问密钥等。

在默认情况下,MinIO 启动时会根据容器内的配置文件进行初始化,因此你只需要确保挂载正确的配置文件即可。

八、端口配置:Host 网络模式 vs Port 映射模式

在 Docker 中,容器的端口配置是非常关键的。MinIO 容器支持两种主要的端口配置方式:Host 网络模式Port 映射模式

  1. Host 网络模式

    在 Docker 中使用 --network host 时,容器将共享宿主机的网络栈,这意味着容器直接使用宿主机的 IP 地址和端口来暴露服务。通过这种方式,容器会使用宿主机的端口 9000 来提供服务。

    配置命令:

    docker run -d \--restart=always \--name "$DOCKER_NAME" \--network host \-e "MINIO_ROOT_USER=minio" \-e "MINIO_ROOT_PASSWORD=minio123456" \-v "$DIR/data:/data/minio" \-v "$DIR/docker/config:/root/.minio" \minio/minio server /data/minio
    
    • 优点
      • 容器共享宿主机的网络,性能较高。
      • 无需显式端口映射,容器与宿主机共享相同的网络。
    • 缺点
      • 容器与宿主机的网络完全共享,可能会有端口冲突,尤其是多个容器或服务同时运行时。
      • 容器的端口与宿主机端口相同,可能存在安全隐患。
  2. Port 映射模式

    如果你希望使用宿主机的特定端口来访问容器内的服务,可以使用 -p 参数进行端口映射。

    配置命令:

    docker run -d \--restart=always \--name "$DOCKER_NAME" \-p 9000:9000 \-e "MINIO_ROOT_USER=minio" \-e "MINIO_ROOT_PASSWORD=minio123456" \-v "$DIR/data:/data/minio" \-v "$DIR/docker/config:/root/.minio" \minio/minio server /data/minio
    
    • 优点
      • 容器端口与宿主机端口不同,可以避免端口冲突。
      • 容器与宿主机之间有更好的网络隔离性。
      • 支持多个容器映射到宿主机不同的端口,适合多容器环境。
    • 缺点
      • 可能会导致稍微的性能损失,因为需要进行额外的端口映射。
      • 需要手动管理和指定端口映射。

九、查看日志和检查容器状态

容器启动后,你可以通过以下命令查看容器的状态,确保它在运行中:

docker ps

如果容器未正常运行,可以查看日志进行排查:

docker logs docker-minio

十、访问 MinIO 服务

完成上述步骤后,你可以通过浏览器访问宿主机的 IP 地址和配置的端口,查看 Nginx 是否正常运行。

  • 如果使用了 --network host,则可以通过 http://localhost:9000 访问 MinIO 控制台。
  • 如果使用了端口映射,例如 -p 9000:9000,则可以通过 http://localhost:9000 访问 MinIO 服务。

在这里插入图片描述

十一、MinIO 联邦集群

MinIO 联邦集群介绍
https://blog.csdn.net/weixin_44876263/article/details/136236974?spm=1001.2014.3001.5501

基于docker的联邦集群搭建 (etcd+minio)
https://blog.csdn.net/weixin_44876263/article/details/136238872?spm=1001.2014.3001.5501


总结

通过 Docker 部署 MinIO 容器非常简便,并且可以灵活配置各个参数。通过挂载本地目录,MinIO 的数据文件和配置文件可以持久化存储在宿主机上,便于管理和备份。使用 Docker 来运行 MinIO 容器不仅简化了部署流程,还提供了极大的灵活性和可扩展性。

相关文章:

Docker 部署 MinIO 对象存储服务

Docker 部署 MinIO 对象存储服务 前言一、准备工作1. 安装 Docker2. 确认服务器架构 二、设置 MinIO 容器的目录结构三、启动一个临时的 MinIO 容器来获取配置文件四、复制 MinIO 配置文件到本地目录五、删除临时 MinIO 容器六、创建并运行 MinIO 容器,挂载本地目录…...

IP段转CIDR:原理Java实现

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

翻译: 深入分析LLMs like ChatGPT 一

大家好,我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍,介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先,我们来谈谈你在这个文本框里输入内容并点击回车后背…...

springboot之HTML与图片生成

背景 后台需要根据字段动态生成HTML&#xff0c;并生成图片&#xff0c;发送邮件到给定邮箱 依赖 <!-- freemarker模板引擎--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifa…...

数据结构(初阶)(三)----单链表

单链表 概念 概念&#xff1a;链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 结点 与顺序表不同的是&#xff0c;链表的结构类似于带车头的火车车厢&#xff0c;&#xff0c;链表的每个车厢都是独立…...

ChatGPT与DeepSeek:AI语言模型的巅峰对决

目录 引言 一、ChatGPT 与 DeepSeek 简介 &#xff08;一&#xff09;ChatGPT &#xff08;二&#xff09;DeepSeek 二、技术原理剖析 &#xff08;一&#xff09;ChatGPT 技术原理 &#xff08;二&#xff09;DeepSeek 技术原理 &#xff08;三&#xff09;技术原理对比…...

DaoCloud 亮相 2025 GDC丨开源赋能 AI 更多可能

2025 年 2 月 21 日至 23 日&#xff0c;上海徐汇西岸&#xff0c;2025 全球开发者先锋大会以 “模塑全球&#xff0c;无限可能” 的主题&#xff0c;围绕云计算、机器人、元宇宙等多元领域&#xff0c;探讨前沿技术创新、应用场景拓展和产业生态赋能&#xff0c;各类专业论坛、…...

人工智能之数学基础:线性代数中矩阵的运算

本文重点 矩阵的运算在解决线性方程组、描述线性变换等方面发挥着至关重要的作用。通过对矩阵进行各种运算,可以简化问题、揭示问题的本质特征。在实际应用中,我们可以利用矩阵运算来处理图像变换、数据分析、电路网络等问题。深入理解和掌握矩阵的运算,对于学习线性代数以…...

(上)基于机器学习的图像识别——遥感图像分类(LeNet-5;AlexNet;VGGNet;GoogLeNet;ResNet)

遥感图像识别&#xff1a; 专业词汇&#xff1a; kernel&#xff1a;卷积 目录 遥感图像分类 1.1 LeNet-5 视频来源&#xff1a; 任务&#xff1a;使用什么网络实现遥感图像的分类 LeNet-5结构&#xff1a; 遥感图像分类 1.2 AlexNet&#xff08;冠军&#xff09; 视频…...

数据集笔记:NUSMods API

1 介绍 NUSMods API 包含用于渲染 NUSMods 的数据。这些数据包括新加坡国立大学&#xff08;NUS&#xff09;提供的课程以及课程表的信息&#xff0c;还包括上课地点的详细信息。 可以使用并实验这些数据&#xff0c;它们是从教务处提供的官方 API 中提取的。 该 API 由静态的…...

HTML元素,标签到底指的哪块部分?单双标签何时使用?

1. 标签&#xff08;Tag&#xff09; vs 元素&#xff08;Element&#xff09; 标签&#xff08;Tag&#xff09; 标签是 HTML 中用于定义元素的符号&#xff0c;用尖括号 < > 包裹。例如 <img> 是标签。元素&#xff08;Element&#xff09; 元素是由 标签 内容…...

基于ai技术的视频生成工具

一、通用型AI视频生成工具 腾讯智影 特点&#xff1a;支持数字人播报、文字转视频&#xff0c;提供免费模板和素材库&#xff0c;登录即送5分钟免费时长&#xff0c;每日签到可兑换额外额度。 限制&#xff1a;免费版分辨率较低&#xff0c;部分高级功能需付费。 LunaAI.vid…...

【Java 后端】Restful API 接口

Restful API 接口 REST&#xff1a;Representational State Transfer&#xff0c;表现层&#xff08;前端的视图页面和后端的控制层&#xff09;资源状态转移。 一种软件架构的风格&#xff08;格式&#xff09; RESTful 是目前最流行的互联网软件架构&#xff0c;如果一个架…...

Matlab地图绘制教程第2期—水陆填充图

上一期分享了海岸线图的绘制方法&#xff1a; 本着由浅入深的理念&#xff0c;本期再来分享一下水陆填充图的绘制方法。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab地图绘制教程系列&#xff0c;旨在降低大家使用Matlab进行地图类科研绘图的门槛&#xff0c;…...

企业知识库搭建:14款开源与免费系统选择

本文介绍了以下14 款知识库管理系统&#xff1a;1.Worktile&#xff1b;2.PingCode&#xff1b;3.石墨文档&#xff1b; 4. 语雀&#xff1b; 5. 有道云笔记&#xff1b; 6. Bitrix24&#xff1b; 7. Logseq等。 在如今的数字化时代&#xff0c;企业和团队面临着越来越多的信息…...

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…...

Android内存优化指南:从数据结构到5R法则的全面策略

目录 一、APP 内存限制 二、内存的三大问题 2.1、内存抖动(Memory Churn) 2.1.1 频繁创建短生命周期对象 2.1.2 系统API或第三方库的不合理使用 2.1.3 Handler使用不当 2.2、内存泄漏(Memory Leak) 2.2.1 静态变量持有Activity或Context引用 2.2.2 未取消的回调或…...

机器学习:线性回归,梯度下降,多元线性回归

线性回归模型 (Linear Regression Model) 梯度下降算法 (Gradient Descent Algorithm) 的数学公式 多元线性回归&#xff08;Multiple Linear Regression&#xff09;...

Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的MySQL实例&#xff0c;其中两个实例中分别有两个Schema的表结构分别与第三实例中两个Schema个结构完全相同&#xff0c;同时复制两个实例中两个Schema里的所有表的数据到第三个实例中两个Schema里&#xff0c;使…...

RabbitMQ系列(一)架构解析

RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件&#xff0c;其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明&#xff1a; 一、核心组件与功能 Broker&#xff08;消息代理服务器&#xff09; RabbitMQ 服务端核…...

终极指南:如何为ZXing创建企业级自定义解码器解决业务条码难题

终极指南&#xff1a;如何为ZXing创建企业级自定义解码器解决业务条码难题 【免费下载链接】zxing ZXing ("Zebra Crossing") barcode scanning library for Java, Android 项目地址: https://gitcode.com/gh_mirrors/zx/zxing 你是否曾遇到过标准扫码库无法解…...

如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题:5步完整指南

如何用Shutter Encoder解决专业视频工作流中的格式兼容性问题&#xff1a;5步完整指南 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder …...

告别Bowtie2!用Minimap2搞定FASTQ到BAM的保姆级流程(含最新参数详解)

告别Bowtie2&#xff01;用Minimap2搞定FASTQ到BAM的保姆级流程&#xff08;含最新参数详解&#xff09; 在生物信息学领域&#xff0c;测序数据的比对分析一直是核心工作流程之一。随着测序技术的快速发展&#xff0c;传统的比对工具如Bowtie2在处理长读长测序数据时逐渐显现出…...

如何用Happy Island Designer免费打造你的梦幻岛屿:终极完整指南

如何用Happy Island Designer免费打造你的梦幻岛屿&#xff1a;终极完整指南 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)"&#xff0c;是一个在线工具&#xff0c;它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal…...

ARMv8调试状态下LDR指令未定义问题解析

1. 问题背景与现象分析在ARMv8-A架构的调试过程中&#xff0c;开发者经常会遇到一个令人困惑的现象&#xff1a;当外部调试器暂停核心执行后&#xff0c;向EDITR寄存器注入LDR X1, [X0]指令&#xff08;机器码0xf9400001&#xff09;时&#xff0c;Tarmac日志显示该指令被标记为…...

别再找组策略了!Windows 11家庭版/专业版通用,一条命令搞定密码永不过期

Windows 11密码永不过期终极指南&#xff1a;告别繁琐设置&#xff0c;一条命令解决所有版本难题 每次开机都被"密码即将过期"的提示烦扰&#xff1f;作为Windows 11用户&#xff0c;你可能已经尝试过各种图形界面设置却无功而返。特别是家庭版用户&#xff0c;面对缺…...

APT32F110 RTC模块深度测评:从硬件原理到低功耗应用实战

1. 项目概述与核心价值最近在捣鼓爱普特APT32F110这块开发板&#xff0c;发现它的RTC&#xff08;实时时钟&#xff09;功能挺有意思。对于很多嵌入式项目来说&#xff0c;比如智能家居的定时开关、数据采集设备的定时唤醒、或者简单的电子钟&#xff0c;一个靠谱的RTC模块是必…...

英特尔N150处理器深度解析:从N100升级看嵌入式一体机效能进化

1. 从N100到N150&#xff1a;一次务实且精准的效能升级在嵌入式与一体机领域&#xff0c;选择一颗合适的处理器&#xff0c;往往意味着在性能、功耗、成本和扩展性之间找到那个微妙的平衡点。过去几年&#xff0c;英特尔的N100处理器凭借其出色的能效比&#xff0c;成为了众多办…...

AI应用开发

1.规划 2.记忆 2.工具 3.行动...

AutoDL新手避坑:Ubuntu 20.04安装Xfce4桌面环境,告别VNC黑屏

AutoDL云平台Xfce4桌面环境配置全攻略&#xff1a;从零搭建到VNC可视化开发 对于刚接触AutoDL等云GPU平台的新手开发者而言&#xff0c;命令行操作往往成为第一道门槛。当需要运行PaddleX这类图形化AI开发工具时&#xff0c;配置可用的远程桌面环境更是常见痛点。本文将彻底解决…...