You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Docker部署MinIO跨机器访问异常:boto3 503与mc别名初始化失败排查

问题解决步骤

一、修正MinIO Docker部署配置

你的Docker Compose中MinIO的command参数需要调整,确保服务监听容器内所有网卡,允许外部设备访问:

services:
  minio:
    image: minio/minio:latest
    container_name: minio
    # 修改command,添加--address指定监听所有网卡
    command: server /data --address 0.0.0.0:9000 --console-address 0.0.0.0:9001
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    volumes:
      - ./data:/data
      - ./config:/root/.minio
    restart: unless-stopped

修改后重启容器:docker-compose down && docker-compose up -d

二、修正Boto3客户端配置

你的Boto3代码存在两个关键问题:

  1. endpoint_url存在语法错误(多余的引号)
  2. 使用了容器内部域名minio,机器B无法解析该地址,必须替换为机器A的Wi-Fi IP

修正后的代码:

import boto3
from botocore.client import Config

# 替换为机器A的实际Wi-Fi IP
MINIO_ENDPOINT = "http://192.168.178.36:9000"
bucket = "your-target-bucket"  # 替换为你要操作的桶名

s3 = boto3.client(
    's3',
    endpoint_url=MINIO_ENDPOINT,
    aws_access_key_id='minioadmin',
    aws_secret_access_key='minioadmin',
    config=Config(signature_version='s3v4'),
    region_name='us-east-1'
)
try:
    s3.head_bucket(Bucket=bucket)
except Exception as e:
    print(f"桶检查失败: {e}")
    s3.create_bucket(Bucket=bucket)

三、解决mc命令别名设置失败问题

1. 先验证网络连通性

在机器B上执行以下命令,确认能正常访问MinIO服务:

curl http://192.168.178.36:9000/minio/health/ready

如果返回OK,说明网络正常;如果失败,排查以下点:

  • 机器A的Wi-Fi是否正常开启,IP地址是否正确
  • 机器A的防火墙是否允许9000端口外部访问(可临时关闭防火墙或添加端口放行规则)
  • MinIO容器是否正常运行:docker ps查看容器状态是否为Up

2. 检查凭据一致性

确保mc命令中的access key和secret key与MinIO配置的MINIO_ACCESS_KEYMINIO_SECRET_KEY完全一致(注意大小写),重新执行命令:

mc alias set minio http://192.168.178.36:9000 minioadmin minioadmin

错误信息翻译

  • boto3错误:客户端错误:调用HeadBucket操作时出错(503)(已达到最大重试次数:4):服务不可用。
  • mc错误:无法使用提供的凭据初始化新别名

内容的提问来源于stack exchange,提问作者user2330646

火山引擎 最新活动