Docker安装MinIO

发布于:2025-06-29 ⋅ 阅读:(23) ⋅ 点赞:(0)

使用 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:将本地目录挂载到容器,持久化存储数据。

验证安装

  1. 访问 MinIO 控制台
    http://localhost:9001
    输入账号密码(admin / yourpassword)。
  2. 通过 API 访问

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/minio
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: yourpassword
    volumes:
      - /path/to/minio-data:/data
    command: 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 设置),可以告诉我! 🚀


网站公告

今日签到

点亮在社区的每一天
去签到