docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker部署MinIO对象存储

docker部署MinIO对象存储的实践指南

作者:叹一曲当时只道是寻常

MinIO是一款高性能的开源对象存储服务器,兼容Amazon S3 API,适用于存储非结构化数据,本文主要为大家介绍了docker部署MinIO对象存储的详细步骤,需要的可以了解下

1.项目介绍

1.1 什么是MinIO?

MinIO是一款高性能的开源对象存储服务器,兼容Amazon S3 API,适用于存储非结构化数据(图片、视频、日志、备份等)。它采用分布式架构设计,支持数据冗余和弹性扩展,同时提供简洁的Web管理界面。

官方仓库介绍: MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

本文简要介绍单机模式下的部署及控制台功能恢复

1.2 参考地址

项目仓库

下载地址

minio中文文档

2.部署

我们查看minio帮助

再查看server命令详细参数

我们将上述帮助翻译成中文

bash-5.1# minio server --help
NAME:
  minio server - 启动物体存储服务器

USAGE:
  minio server [FLAGS] DIR1 [DIR2..]
  minio server [FLAGS] DIR{1...64}
  minio server [FLAGS] DIR{1...64} DIR{65...128}

DIR:
  DIR指向文件系统上的一个目录。当你想要将多个驱动器组合成一个大型系统时,每个文件系统传递一个目录,并用空格分隔。你也可以使用“...”约定来缩写目录参数。在分布式设置中,远程目录被编码为HTTP(s)URI。

FLAGS:
  --config value               通过YAML配置指定服务器配置 [$MINIO_CONFIG]
  --address value              绑定到特定的ADDRESS:PORT,ADDRESS可以是IP或主机名(默认值:":9000")[$MINIO_ADDRESS]
  --console-address value      为嵌入式控制台UI绑定特定的ADDRESS:PORT,ADDRESS可以是IP或主机名 [$MINIO_CONSOLE_ADDRESS]
  --ftp value                  启用并配置FTP(安全)服务器
  --sftp value                 启用并配置SFTP服务器
  --certs-dir value, -S value  证书目录的路径(默认值:"/root/.minio/certs")
  --quiet                      禁用启动和信息消息
  --anonymous                  隐藏日志中的敏感信息
  --json                       以JSON格式输出日志
  --help, -h                   显示帮助

EXAMPLES:
  1. 在"/home/shared"目录上启动MinIO服务器。
     $ minio server /home/shared

  2. 使用64个本地驱动器"/mnt/data1"到"/mnt/data64"启动单节点服务器。
     $ minio server /mnt/data{1...64}

  3. 在一个有32个节点、每个节点有32个驱动器的分布式环境中启动MinIO服务器,在所有节点上运行以下命令:
     $ minio server http://node{1...32}.example.com/mnt/export{1...32}

  4. 在一个扩展的分布式环境中启动MinIO服务器,在所有节点上运行以下命令:
     $ minio server http://node{1...16}.example.com/mnt/export{1...32} \
            http://node{17...64}.example.com/mnt/export{1...64}

  5. 在所有接口上分别通过端口8021和8022启动带有FTP和SFTP服务器的分布式MinIO服务器:
     $ minio server http://node{1...4}.example.com/mnt/export{1...4} \
           --ftp="address=:8021" --ftp="passive-port-range=30000-40000" \
           --sftp="address=:8022" --sftp="ssh-private-key=${HOME}/.ssh/id_rsa"

2.1 参数解释

认证参数(必需)

参数类型说明示例
MINIO_ROOT_USER环境变量管理员账号-e "MINIO_ROOT_USER=admin"
MINIO_ROOT_PASSWORD环境变量管理员密码-e "MINIO_ROOT_PASSWORD=Your@Strong!Pass"

安全建议:密码长度≥8位,包含大小写字母+数字+特殊符号

网络端口参数

参数类型说明示例
--address命令行API服务监听端口server /data --address ":9000"
--console-address命令行Web控制台端口--console-address ":9001"
MINIO_SERVER_URL环境变量外部访问URL-e "MINIO_SERVER_URL=https://minio.example.com"

端口映射示例:docker run -p 9000:9000 -p 9001:9001 ...

存储参数

参数类型说明示例
目录路径命令行数据存储位置server /data
MINIO_REGION环境变量存储区域名称-e "MINIO_REGION=us-east-1"
MINIO_DOMAIN环境变量虚拟主机域名-e "MINIO_DOMAIN=storage.example.com"

多磁盘部署:server /disk1 /disk2 /disk3 /disk4

安全加密参数

参数类型说明示例
--certs-dir命令行SSL证书目录--certs-dir /etc/minio/certs

性能调优参数

参数类型说明示例
MINIO_STORAGE_CLASS_STANDARD环境变量存储类配置-e "MINIO_STORAGE_CLASS_STANDARD=EC:2"
MINIO_API_REQUESTS_DEADLINE环境变量API超时时间(秒)-e "MINIO_API_REQUESTS_DEADLINE=60"
MINIO_CACHE_DRIVES环境变量缓存磁盘路径-e "MINIO_CACHE_DRIVES=/mnt/cache"
MINIO_CACHE_EXCLUDE环境变量缓存排除规则-e "MINIO_CACHE_EXCLUDE=*.tmp"

监控诊断参数

参数类型说明示例
MINIO_PROMETHEUS_AUTH_TYPE环境变量Prometheus认证-e "MINIO_PROMETHEUS_AUTH_TYPE=public"
MINIO_AUDIT_WEBHOOK_ENDPOINT环境变量审计日志地址-e "MINIO_AUDIT_WEBHOOK_ENDPOINT=http://logserver"
MINIO_LOG_QUERY_URL环境变量日志查询地址-e "MINIO_LOG_QUERY_URL=http://loki:3100"
--quiet命令行禁止启动日志server /data --quiet

安全加固参数

参数类型说明示例
MINIO_BROWSER环境变量禁用Web控制台-e "MINIO_BROWSER=off"
MINIO_SERVER_DEBUG环境变量调试模式-e "MINIO_SERVER_DEBUG=on" (临时诊断)
MINIO_ROOT_PASSWORD_HASH环境变量密码哈希值替代明文密码(生产推荐)
MINIO_DISABLE_*环境变量禁用特定功能如MINIO_DISABLE_METRICS=on

2.2 cli命令部署

根据上述参数,我们很容易就编写好cli模式部署的命令

docker run -d \
  -p 9000:9000 \
  -p 9001:9001 \
  --name minio \
  -v ~/minio/data:/data \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=12345678" \
 minio/minio server /data --console-address ":9001"

2.3 docker-compose模式部署

创建docker-compse文件

mkdir minio
cd minio
mkdir data
touch docker-compose.yml
vim docker-compose.yml

编写docker-compose.yml

version: '3.8'

services:
  minio:
    image: minio/minio
    container_name: minio_server
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: 12345678
    ports:
      - "9000:9000"   # API 端口
      - "9001:9001"   # Web 控制台端口
    volumes:
      - ./data:/data   # 使用命名卷
    restart: unless-stopped

启动

docker compose up -d

访问控制台页面http://127.0.0.1:9000

我们可以看到控制台功能非常的少,

2.4 通过历史版本恢复控制台功能

我们可以通过minio/minio · Quay进行查询历史版本

经测试,2025-04-22版本是最后一个支持完整控制台的版本

docker pull quay.io/minio/minio:RELEASE.2025-04-22T22-12-26Z

如果需要完整控制台功能可以安装该版本,需要在docker run命令中或者docker-compose.yml文件中进行版本指定

重新部署,可以看到,控制台功能已经恢复。

以上就是docker部署MinIO对象存储的实践指南的详细内容,更多关于docker部署MinIO对象存储的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文