Docker安装MinIO
使用 Docker 安装 MinIO 非常简单,以下是详细的步骤,涵盖 单机部署 和 分布式部署(多节点) 两种方式:
1. 单机模式(适合本地开发/测试)
命令(直接运行)
docker run -d \-p 9000:9000 -p 9001:9001 \-e "MINIO_ROOT_USER=admin" \-e "MINIO_ROOT_PASSWORD=yourpassword" \-v /path/to/minio-data:/data \--name minio \minio/minio server /data --console-address ":9001"
参数说明
-p 9000:9000
:MinIO API 端口(用于 S3 兼容接口,如上传/下载文件)。-p 9001:9001
:MinIO 控制台端口(Web 管理界面)。-e MINIO_ROOT_USER
:管理员账号(默认admin
)。-e MINIO_ROOT_PASSWORD
:管理员密码(需自定义,如yourpassword
)。-v /path/to/minio-data:/data
:将本地目录挂载到容器,持久化存储数据。
验证安装
- 访问 MinIO 控制台:
http://localhost:9001
输入账号密码(admin
/yourpassword
)。 - 通过 API 访问:
- Endpoint:
http://localhost:9000
- 可用 AWS CLI 或 MinIO Client (
mc
) 测试连接。
- Endpoint:
2. 分布式模式(生产环境,4节点示例)
MinIO 分布式部署需至少 4个节点(纠删码冗余存储)。
命令(4节点部署)
docker run -d \--net=host \-e "MINIO_ROOT_USER=admin" \-e "MINIO_ROOT_PASSWORD=yourpassword" \-v /mnt/disk1:/data1 \-v /mnt/disk2:/data2 \-v /mnt/disk3:/data3 \-v /mnt/disk4:/data4 \minio/minio server \http://hostname{1...4}/data{1...4} \--console-address ":9001"
关键配置
--net=host
:使用主机网络模式(避免端口映射问题)。- 每个节点挂载 独立磁盘(如
/mnt/disk1
到/data1
)。 http://hostname{1...4}/data{1...4}
:替换hostname
为实际节点主机名或 IP。
3. 使用 Docker Compose(推荐单机)
创建 docker-compose.yml
文件:
version: '3'
services:minio:image: minio/minioports:- "9000:9000"- "9001:9001"environment:MINIO_ROOT_USER: adminMINIO_ROOT_PASSWORD: yourpasswordvolumes:- /path/to/minio-data:/datacommand: server /data --console-address ":9001"restart: unless-stopped
运行:
docker-compose up -d
4. 基本操作
(1) 登录控制台
- 访问
http://localhost:9001
,用admin
/yourpassword
登录。 - 创建 Bucket(如
music-bucket
),上传文件。
(2) 使用 MinIO Client (mc
)
# 安装 mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc
chmod +x /usr/local/bin/mc# 添加 MinIO 服务器
mc alias set myminio http://localhost:9000 admin yourpassword# 上传文件
mc cp song.mp3 myminio/music-bucket# 生成临时访问链接(私有文件)
mc share download myminio/music-bucket/song.mp3
(3) 通过代码访问(Node.js 示例)
const MinIO = require('minio');const minioClient = new MinIO.Client({endPoint: 'localhost',port: 9000,useSSL: false,accessKey: 'admin',secretKey: 'yourpassword'
});// 上传文件
minioClient.fPutObject('music-bucket', 'song.mp3', '/path/to/song.mp3', (err) => {if (err) console.error(err);else console.log('Upload success!');
});
5. 常见问题
Q1: 如何修改默认端口?
在 docker run
命令中替换 -p
参数,例如:
-p 8000:9000 -p 8001:9001 # 外部端口 8000/8001
Q2: 如何启用 HTTPS?
- 挂载 SSL 证书到容器:
-v /path/to/certs:/root/.minio/certs
- 或使用反向代理(如 Nginx)。
Q3: 数据如何备份?
- 直接备份挂载的本地目录(
/path/to/minio-data
)。 - 使用
mc mirror
命令同步到其他存储。
总结
- 单机部署:适合开发和测试,一键运行。
- 分布式部署:生产环境必备,需至少 4 节点。
- 持久化存储:务必挂载本地目录到容器(
-v
参数)。 - 安全建议:修改默认密码,限制 API 访问 IP。
如果需要更详细的配置(如 Nginx 反向代理、HTTPS 设置),可以告诉我! 🚀