Docker安装部署本地对象存储Minio和使用指南
MinIO是一款高性能的开源对象存储服务器,兼容Amazon S3 API,适用于存储非结构化数据,如图片、视频、日志、备份等。它采用分布式架构设计,支持数据冗余和弹性扩展,同时提供简洁的Web管理界面。
和其他对象存储服务相比,具有以下优势:
- 高性能:MinIO 采用并行架构和纠删码分布式存储,数据分片并行读写,支持 PUT/GET 操作高达 32GB/s 的吞吐量,在高并发场景下表现出色
- S3 兼容性:MinIO 提供了与 AWS S3 API 完全兼容的接口,任何为 S3 构建的应用程序、工具和 SDK 都可以零修改地直接与 MinIO 对接,极大地降低了迁移成本和开发复杂度
- 部署灵活简便:MinIO 是一个轻量级对象存储服务,单机模式下仅需一个二进制文件即可启动,支持 Docker 或 Kubernetes 快速扩展,可轻松部署,操作简单
- 数据安全可靠:MinIO 支持多种复杂的服务器端加密方案,如 AES-256-GCM、ChaCha20-Poly1305 和 AES-CBC 等,可保护静态和动态数据
- 成本优势:MinIO 是开源软件,可私有化部署
一、Docker安装部署Minio应用
1、创建本地目录映射
mkdir -p /opt/docker/minio/data
mkdir -p /opt/docker/minio/config
2、Docker命令创建Minio应用
docker run -d \
--name minio-server \
--restart=always \
-p 9000:9000 \
-p 9001:9001 \
-e "MINIO_ROOT_USER=minio" \ # 账号
-e "MINIO_ROOT_PASSWORD=minio123456" \ # 密码
-v /opt/docker/minio/data:/data \ # 映射 数据文件
-v /opt/docker/minio/config:/root/.minio \ # 映射 配置文件
minio/minio server /data
参数解释:
- -d:后台运行容器。
- --restart=always:容器在崩溃或系统重启后自动重启。
- --name "$DOCKER_NAME":容器的名称为 minio-server。
- -e "MINIO_ROOT_USER=minio":设置 MinIO 的根用户。
- -e "MINIO_ROOT_PASSWORD=minio123456":设置 MinIO 的根密码。
- -v "/opt/docker/minio/data:/data":挂载数据目录到容器中。
- -v "/opt/docker/minio/config:/root/.minio":挂载配置目录到容器中。
9000是MinIO服务默认端口,9001是MinIO Web端口
3、修改配置项(可选)
如果你需要修改 MinIO 的配置,可以直接修改/opt/docker/minio/config 目录下的配置文件。MinIO 支持通过环境变量配置许多功能,例如设置根用户、密码、访问密钥等。
在默认情况下,MinIO 启动时会根据容器内的配置文件进行初始化,因此你只需要确保挂载正确的配置文件即可。
4、访问MinIO服务
完成上述步骤后,你可以通过浏览器访问宿主机的 IP 地址和配置的端口,查看 MinIO是否正常运行。
如果使用了端口映射,例如 -p 9000:9000,则可以通过 http://宿主机IP:9000 访问 MinIO 服务
二、Minio使用
2.1、访问 Minio 控制台
1)指定的用户名/密码:minio/minio123456
, 进入到 Minio
的管理后台:
2)新建数据桶
3)上传和浏览数据
使用Object Browser模块
1、点击Upload,上传文件
2、预览文件
选择图片,点击Preview
2.2、创建和管理Token
创建Token主要方便与第三方系统集成,比如提供图床、数据备份等存储服务
访问 MinIO 控制台
默认端口
9001
,如http://192.168.1.100:9001
),用管理员账号登录通过侧边栏User-Access Keys模块,点击创建Token
Token是一对组合,Access Key、Secret Key,过期时间默认最长不超过1年,过期后可续或重新创建
4、第三方应用调用
如果是第三方调用,还涉及到Bucket、Region等信息
示例:
END_POINT即MinIO服务地址,不是Web,默认是9000
# S3 File Uploads
LEAN_USE_S3=true # Set to true for using S3
LEAN_S3_KEY='' # S3 Key, hardcoded in s3ninja
LEAN_S3_SECRET='' # S3 Secret, hardcoded in s3ninja
LEAN_S3_BUCKET='' # S3 bucket name
LEAN_S3_USE_PATH_STYLE_ENDPOINT=true # Sets the endpoint style: false => https://[bucket].[endpoint] ; true => https://[endpoint]/[bucket]
LEAN_S3_REGION='' # S3 region
LEAN_S3_FOLDER_NAME='' # Foldername within S3 (can be emtpy)
LEAN_S3_END_POINT='' # S3 EndPoint S3 Compatible
三、注意事项
1、性能优化
避免大量小文件(<1MB)存储,可通过合并文件减少元数据开销;大文件采用分片上传,默认分片大小 5MB,可根据网络调整;利用 MinIO 缓存机制,将热点数据缓存至 SSD 或内存;合理设置并发参数,避免过度占用系统资源。
2、安全加固
创建强密码的管理员账户;强制开启 HTTPS,使用 TLS 1.2 + 协议加密传输;通过 IAM 策略精细化控制权限,遵循最小权限原则;启用服务器端加密(SSE)保护静态数据,密钥管理建议对接 KMS。
3、部署架构选择
开发测试可用单机模式,生产环境建议采用分布式部署,且节点数至少 4 个以实现高可用,单节