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 参考地址
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对象存储的资料请关注脚本之家其它相关文章!