当前位置: 首页 > 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 服务端核…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...