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

图片查重从设计到实现(3)图片存储MinIO 应用介绍及 Docker 环境下的安装部署

MinIO 应用介绍及 Docker 环境下的安装部署

一、MinIO 应用介绍

MinIO 是一款基于对象存储的高性能开源软件,兼容 Amazon S3 API,适用于存储大量非结构化数据(如图片、视频、日志文件等)。它具有以下核心特点:

  • 高性能:采用分布式架构,支持并行读写,适合高吞吐量场景(如大数据分析、视频流媒体)。
  • 兼容性:完全兼容 S3 API,可无缝对接依赖 S3 的工具(如 AWS CLI、Hadoop、Spark 等)。
  • 轻量级:部署简单,单节点可运行,也可扩展为分布式集群。
  • 安全性:支持数据加密(传输中 TLS/SSL、存储时 AES-256)、访问控制(IAM 策略)和签名 URL 授权。
  • 灵活性:支持本地磁盘、JBOD、云存储等多种存储介质,可按需扩展容量。

典型应用场景

  • 作为私有云存储服务(替代 AWS S3)。
  • 为应用程序提供文件上传/下载功能(如电商图片存储)。
  • 大数据场景下的中间数据存储(如 Spark 计算结果)。
  • 日志/备份数据的集中存储。

二、Docker 环境下安装部署 MinIO

以下是在 Docker 中快速部署 MinIO 单节点的步骤,适用于开发测试或小规模生产环境。

1. 前提条件

  • 已安装 Docker(推荐版本 20.10+),并确保 Docker 服务正常运行。

2. 单节点部署(Docker 命令)

通过以下命令直接启动 MinIO 容器,包含服务端和 Web 控制台。

步骤 1:创建数据存储目录

在宿主机上创建用于持久化 MinIO 数据的目录(避免容器重启后数据丢失):

mkdir -p /data/milnus/minio/data  # 存储对象数据
mkdir -p /data/milnus/minio/config  # 存储配置文件
步骤 2:启动 MinIO 容器

执行以下命令,指定访问密钥、端口映射和数据目录挂载:

docker run -d \--name minio \-p 9000:9000 \  # API 端口(用于 S3 客户端访问)-p 9001:9001 \  # 控制台端口(Web 管理界面)-v /data/minio/data:/data \  # 挂载数据目录-v /data/minio/config:/root/.minio \  # 挂载配置目录-e "MINIO_ROOT_USER=minioadmin" \  # 管理员账号(自定义,建议修改)-e "MINIO_ROOT_PASSWORD=minioadmin" \  # 管理员密码(自定义,建议复杂密码)-e "MINIO_SERVER_URL=http://192.168.1.100:9000" \  # 服务端 API 地址(替换为宿主机 IP)minio/minio server /data --console-address ":9001"
  • 参数说明
    • MINIO_ROOT_USER:管理员用户名(默认 minioadmin,生产环境需修改)。
    • MINIO_ROOT_PASSWORD:管理员密码(默认 minioadmin,长度需至少 8 位)。
    • --console-address ":9001":指定控制台端口(默认与 API 端口共用,此处单独指定便于区分)。

3. 验证部署

步骤 1:检查容器状态
docker ps | grep minio  # 确认容器状态为 Up

在这里插入图片描述

步骤 2:访问 Web 控制台

打开浏览器,访问 http://宿主机IP:9001,使用配置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录(默认 minioadmin/minioadmin)。
在这里插入图片描述
在这里插入图片描述

登录后可:

  • 创建存储桶(Bucket)。

  • 在这里插入图片描述

  • 上传/下载文件。

  • 配置访问权限、生命周期规则等。

三、注意事项

  1. 生产环境建议

    • 单节点适合测试,生产环境需部署分布式集群(至少 4 节点,确保数据冗余)。
    • 修改默认账号密码(MINIO_ROOT_USERMINIO_ROOT_PASSWORD),避免安全风险。
    • 配置 TLS/SSL 加密(通过 MINIO_SERVER_URL 指定 HTTPS 地址,并挂载证书文件)。
  2. 数据备份:定期备份 /data/minio/data 目录,防止数据丢失。

  3. 资源限制:根据需求调整容器的 CPU/内存限制(通过 --cpus--memory 参数)。

http://www.xdnf.cn/news/1182853.html

相关文章:

  • Java学习第七十五部分——Docker
  • 【前端】JavaScript文件压缩指南
  • Gitee Test:国产软件测试平台如何筑牢关键领域数字安全屏障
  • Spring Boot License 认证系统
  • c# openxml 打开加密 的word读取内容
  • SQL性能优化
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的私域流量池用户运营研究
  • 如何实现缓存音频功能(App端详解)
  • vscode 字体的跟换
  • OpenCV 图像变换全解析:从镜像翻转到仿射变换的实践指南
  • VSCode——python选择解释器消失的解决办法
  • 【通识】算法案例
  • 安卓上的迷之K_1171477665
  • 顺应AI浪潮,电科金仓数据库再创辉煌
  • 2025真实面试试题分析-安卓客户端开发
  • 去除视频字幕 2, 使用 PaddleOCR 选取图片中的字幕区域, 根据像素大小 + 形状轮廓
  • AI浪潮涌,数据库“融合智能”奏响产业新乐章
  • I/O多路复用机制中触发机制详细解析
  • 【数据结构】长幼有序:树、二叉树、堆与TOP-K问题的层次解析(含源码)
  • 【SpringAI实战】实现仿DeepSeek页面对话机器人(支持多模态上传)
  • 【深度学习优化算法】09:Adadelta算法
  • JavaScript -Socket5代理使用
  • 攻防世界-Crypto-Morse
  • react+threejs实现自适应分屏查看/3D场景对比功能/双场景对比查看器
  • C 语言 | 结构体详解:自定义数据类型的艺术
  • 筑牢网站运营根基:售后工作的核心维度与实践方法
  • 篇五 网络通信硬件之PHY,MAC, RJ45
  • 车身域控制器MCU市场报告:解析行业现状与未来趋势
  • 【机器学习之推荐算法】基于矩阵分解和损失函数梯度下降的协同过滤算法实现
  • 解决angular与jetty websocket 每30s自动断连的问题