Docker 安装 MinIO 的教程
MinIO 是一个开源的对象存储服务,与 Amazon S3 兼容,常用于本地开发、测试或小型部署。它支持通过 Docker 快速安装和运行。本教程基于官方和社区资源总结,包括一键启动命令、端口自定义(使用 3000 以上端口)、Python 测试连接,以及常见问题解决。教程假设你已在本地或远程服务器(如 IP 为 117.72.56.34 的机器)上安装了 Docker。如果未安装 Docker,请参考官方文档安装。
先决条件
- 已安装 Docker(版本 20.x 或更高)。检查:
docker --version。 - 服务器有足够的存储空间,用于数据卷。
- Python 环境(用于测试),并安装
minio库:pip install minio。
步骤 1: 运行 MinIO 容器
使用 Docker 拉取并运行 MinIO 镜像。以下是一个一键命令示例,用于单节点部署。将 /path/to/your/data 替换为实际的数据存储路径(如 /data/minio)。为安全起见,使用自定义用户名和密码,但示例中使用默认 minioadmin。
基本命令:
docker run -d -p 9000:9000 -p 9001:9001 --name minio \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v /path/to/your/data:/data \
minio/minio server /data --console-address ":9001"
-d:后台运行。-p:端口映射(主机端口:容器端口)。-e:环境变量设置根用户和密码。-v:数据卷挂载,确保数据持久化。--console-address:指定控制台端口。
运行后,检查容器状态:docker ps。访问控制台:http://localhost:9001(使用用户名和密码登录)。API 端点:http://localhost:9000。
自定义端口(使用 3000 以上)
如果默认端口被占用,修改为主机端口 3001(API)和 3002(控制台):
docker run -d -p 3001:9000 -p 3002:9001 --name minio \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v /path/to/your/data:/data \
minio/minio server /data --console-address ":9001"
- 访问控制台:http://localhost:3002 或 http://117.72.56.34:3002。
- API 端点:http://localhost:3001 或 http://117.72.56.34:3001。
确保防火墙允许这些端口(如 ufw allow 3001 和 ufw allow 3002)。
步骤 2: 使用 Docker Compose(可选,推荐生产环境)
创建 docker-compose.yml 文件:
version: '3.8'
services:
minio:
image: minio/minio
container_name: minio
ports:
- "3001:9000"
- "3002:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- /path/to/your/data:/data
command: server /data --console-address ":9001"
运行:docker-compose up -d。停止:docker-compose down。
步骤 3: 测试连接
使用 Python 的 MinIO SDK 验证连接。创建文件 test_minio.py(避免命名为 minio.py 以防冲突)。
from minio import Minio
from minio.error import S3Error
endpoint = '117.72.56.34:3001' # 或 'localhost:3001'
access_key = 'minioadmin'
secret_key = 'minioadmin'
client = Minio(endpoint,
access_key=access_key,
secret_key=secret_key,
secure=False) # 如果 HTTPS,设为 True
try:
buckets = client.list_buckets()
print("连接成功!现有桶列表:")
for bucket in buckets:
print(bucket.name)
except S3Error as err:
print(f"连接失败:{err}")
except Exception as e:
print(f"发生错误:{e}")
运行:python test_minio.py。如果成功,会列出桶列表。
步骤 4: 基本使用
- 创建桶:在控制台或 SDK 中创建。
- 上传/下载文件:使用 MinIO 客户端
mc(安装:下载二进制或brew install minio/stable/mc),配置:mc alias set myminio http://117.72.56.34:3001 minioadmin minioadmin。 - 更多操作:参考官方文档。
故障排除
- 端口冲突:使用
netstat或docker ps检查,修改端口。 - 数据持久化:确保卷路径存在且有权限(
mkdir -p /path/to/your/data)。 - Python 导入错误:如果 “cannot import name ‘Minio’”,重命名脚本并重试。
- 远程访问:使用 IP,确保防火墙开放。生产环境启用 HTTPS。
- 日志检查:
docker logs minio。
对于高级配置,如分布式模式,参考官方文档。