🚀 使用 Docker Compose 部署 MinIO
MinIO 是一款基于 Go 语言编写的开源对象存储系统,它兼容 Amazon S3 云存储服务接口,非常适合存储图片、视频、日志文件等非结构化数据。通过 Docker Compose 部署 MinIO,可以简化安装过程,并确保环境一致性。
📦 项目简介
MinIO 的核心目标是提供一个高性能、轻量级的对象存储解决方案。它与所有官方 AWS S3 SDK 和工具完全兼容,让你可以在自己的基础设施上享受类似 S3 的存储服务。
主要功能特点: * 🔒 数据安全:使用 MinIO Erasure Code(纠删码)来防止硬件故障,即便损坏一半以上的硬盘,仍然可以从中恢复。 * ⚡ 高性能:作为高性能对象存储,在标准硬件条件下它能达到很高的读写速率。 * 🌐 可扩展性:不同 MinIO 集群可以组成联邦,并形成一个全局的命名空间,跨越多个数据中心。 * 🛠️ 开发者友好:提供友好的 Web 操作界面,丰富的 API,并支持多种编程语言的 SDK。 * ☁️ 云原生友好:完美集成 Kubernetes、Docker、Prometheus 等云原生工具。
⚙️ 部署前准备
-
环境要求
- 已安装 Docker 和 Docker Compose(这是运行 MinIO 的必备条件)。
- 系统内存:建议 1GB 以上。
- 确保服务器的 9000 和 9001 端口未被占用。
-
环境检查 在终端中执行以下命令,确认 Docker 环境正常:
bash docker --version docker-compose --version -
创建项目目录 建议创建一个独立的目录来管理 MinIO 的所有文件。
bash mkdir -p /opt/docker/minio cd /opt/docker/minio
🛠️ 配置 Docker Compose
基于你提供的配置,这里是对 docker-compose.yml 文件的优化和完整说明:
services:
minio:
image: minio/minio:latest # 官方最新镜像(稳定更新,兼容性好)
container_name: minio # 官方最新镜像(稳定更新,兼容性好)
restart: always # 容器退出后自动重启(开机自启,确保服务不中断)
#mem_limit: 1G
ports:
- '9000:9000' # S3 API 端口映射:主机 9000 → 容器 9000
- '9001:9001' # Web 控制台端口映射:主机 9001 → 容器 9001
environment:
PUID: 1000 # Web 控制台端口映射:主机 9001 → 容器 9001
PGID: 1000 # 运行用户组 ID(与 PUID 一致)
MINIO_ROOT_USER: admin # MinIO 管理员账号(**必须修改!建议用复杂用户名**)
MINIO_ROOT_PASSWORD: adminadmin1 # MinIO 管理员账号(**必须修改!建议用复杂用户名**)
# 可选:如需配置外部访问,取消注释并修改以下变量
#MINIO_SERVER_URL: https://xs.clxr30.top/ # 可选:绑定自定义域名(需配置 HTTPS)
#MINIO_BROWSER_REDIRECT_URL: https://xs.clxr30.top/minio/ui # 可选:控制台自定义访问地址
volumes:
#- ./data:/data # 数据存储目录
# 数据存储目录:主机 /mnt/10t/file/minio_data → 容器 /data(核心!所有上传文件存在这里)
- /mnt/10t/file/minio_data:/data # 数据存储目录
#cp -rv /home/compose/minio/data /mnt/10t/file/minio_data
# 配置目录:主机 ./minio → 容器 /root/.minio(保存密钥、桶配置等,避免重启丢失)
- ./minio:/root/.minio
command: server /data --console-address ":9001" # 启动命令:指定数据目录和控制台端口
healthcheck: #健康检查:定期验证服务是否可用,失败会自动重启容器
test: ['CMD', 'mc', 'ready', 'local']
interval: 5s
timeout: 5s
retries: 5
#VPS版配置
#docker network create custom 创建网络
#version: '2'
#version: '3'
# docker-compose.yaml
#version: '3'
services:
minio:
image: minio/minio:latest
container_name: minio
restart: always
#mem_limit: 1G
ports:
- '9000:9000'
- '9001:9001' # MinIO 控制台
environment:
PUID: 1000
PGID: 1000
MINIO_ROOT_USER: admin # 更改为你自己的用户名
MINIO_ROOT_PASSWORD: adminadmin1 # 更改为你自己的密码
#MINIO_SERVER_URL: https://xs.clxr30.top/
#MINIO_BROWSER_REDIRECT_URL: https://xs.clxr30.top/minio/ui
volumes:
- ./data:/data # 数据存储目录
#- /mnt/10t/file/minio_data:/data # 数据存储目录
#cp -rv /home/compose/minio/data /mnt/10t/file/minio_data
- ./minio:/root/.minio
command: server /data --console-address ":9001" # 启动命令
healthcheck:
test: ['CMD', 'mc', 'ready', 'local']
interval: 5s
timeout: 5s
retries: 5
deploy: # 在单机模式下使用deploy.resources # 单机模式也支持这种语法
resources:
limits:
#cpus: '0.7'
#memory: 512M
cpus: '0.1'
memory: 356M
#data数据里面设置一个user账户和aaa的存储桶
关键配置说明:
| 配置项 | 说明与建议 |
|---|---|
ports |
9000:9000 用于 S3 API 访问,9001:9001 用于 Web 控制台访问。 |
environment |
MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 是最重要的配置,请务必修改为强密码。 |
volumes |
/mnt/10t/file/minio_data:/data 用于持久化存储MinIO 的所有数据。./minio/config:/root/.minio 用于持久化配置。 |
command |
server /data 指定数据目录,--console-address ":9001" 明确指定控制台端口。 |
healthcheck |
健康检查配置,确保服务正常运行。 |
注意:生产环境中请务必修改
MINIO_ROOT_USER和MINIO_ROOT_PASSWORD的值,并使用强密码。
🚀 启动与验证
-
启动 MinIO 服务 在
docker-compose.yml文件所在目录执行:bash docker-compose up -d此命令会拉取镜像并在后台启动容器。 -
检查服务状态
bash docker-compose ps如果看到minio容器的状态为Up,说明服务已成功启动。 -
查看实时日志(可选) 如果遇到问题,可以通过以下命令查看容器日志来排查:
bash docker-compose logs -f minio -
访问 Web 控制台 打开浏览器,访问
http://你的服务器IP:9001。- 使用配置的用户名(
admin)和密码(adminadmin)登录。 - 如果一切正常,你将看到 MinIO 的管理界面。
- 使用配置的用户名(
⚙️ 基础配置与使用
-
创建存储桶(Bucket)
- 登录 MinIO 控制台后,点击左侧菜单的 "Buckets"。
- 点击 "Create Bucket" 按钮。
- 输入 Bucket 名称(如
my-bucket),然后点击 "Save" 保存。
-
设置访问策略
- 在 Bucket 列表中找到你创建的 Bucket,点击右侧的操作按钮。
- 选择 "Edit policy"。
- 可以根据需要设置 Bucket 的访问权限(如只读、只写、读写等)。
-
上传和下载文件
- 点击 Bucket 名称进入详情页。
- 点击 "Upload" 按钮可以上传文件或文件夹。
- 文件上传后,可以通过右侧菜单下载或分享文件。
-
使用客户端工具(可选) MinIO 提供了
mc命令行工具,可以方便地管理 MinIO 服务: ```bash # 配置 MinIO 服务器 mc alias set myminio http://localhost:9000 admin adminadmin列出所有 Bucket
mc ls myminio
上传文件
mc cp localfile.txt myminio/my-bucket/ ```
🔒 维护与管理
-
服务管理:
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看服务状态:
docker-compose ps
- 停止服务:
-
数据备份:
- 定期备份你的
docker-compose.yml文件。 - 最重要的是备份数据目录:
/mnt/10t/file/minio_data(根据你的卷挂载配置)。
- 定期备份你的
-
版本更新: MinIO 活跃更新,建议定期升级:
bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull # 拉取最新镜像 docker-compose up -d # 可选:清理无用镜像 docker image prune
🐛 常见问题排查
| 问题现象 | 可能原因与解决方法 |
|---|---|
| 无法访问 Web 控制台 | 1. 检查防火墙/安全组是否放行了 9001 端口。 2. 确认容器是否正常运行: docker-compose ps。3. 查看容器日志: docker-compose logs minio。 |
| 登录失败 | 1. 确认用户名和密码与 docker-compose.yml 中 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 设置的一致。2. 检查环境变量是否正确设置。 |
| 文件上传失败或权限错误 | 1. 检查 Bucket 的访问策略设置。 2. 确认 MinIO 服务对挂载的数据目录有读写权限。 |
| 存储空间不足 | 1. 检查宿主机磁盘空间:df -h。2. 清理不必要的文件或扩展存储空间。 |
💡 提示:单机版 MinIO 适合开发和测试环境,生产环境建议使用分布式部署以确保数据的高可用性。
希望这份教程能帮助你顺利完成 MinIO 的部署!享受高性能对象存储带来的便利!