Docker 容器编排方式
下面是配置,创建了4个容器,每个容器就是一个minio服务,每个容器一个drive(也可以设置多个,一个drive建议就是一个硬盘分区,会更合理),minio需要4个节点构成一个池。注意,最新版无法通过控制台创建assertKey等鉴权,需要使用命令(具体见官网),建议使用minio/minio:RELEASE.2025-04-22T22-12-26Z 这个镜像:
version: '3.8'
services:
minio1:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z # 使用最新版,或指定稳定版本如 RELEASE.2024-07-09T19-52-02Z
hostname: minio1 # 容器主机名很重要,用于节点间通信
container_name: minio1
volumes:
- /opt/minio-cluster/data/node1/drive1:/data/drive1 # 挂载宿主机目录到容器内驱动器路径
ports:
- "9001:9000" # API端口 (S3) 映射到宿主机不同端口
- "9091:9090" # 控制台端口映射到宿主机不同端口
environment:
MINIO_ROOT_USER: minioadmin # *所有节点必须使用相同的ROOT凭据!*
MINIO_ROOT_PASSWORD: minioadmin # *所有节点必须使用相同的ROOT凭据!*
command: server --console-address ":9090" http://minio{1...4}:9000/data/drive{1...1} # 关键!指定集群所有节点和驱动器路径/data-{1...4}/minio
networks:
- minio-cluster-net
minio2:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
hostname: minio2
container_name: minio2
volumes:
- /opt/minio-cluster/data/node2/drive1:/data/drive1
ports:
- "9002:9000"
- "9092:9090"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server --console-address ":9090" http://minio{1...4}:9000/data/drive{1...1}
networks:
- minio-cluster-net
minio3:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
hostname: minio3
container_name: minio3
volumes:
- /opt/minio-cluster/data/node3/drive1:/data/drive1
ports:
- "9003:9000"
- "9093:9090"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server --console-address ":9090" http://minio{1...4}:9000/data/drive{1...1}
networks:
- minio-cluster-net
minio4:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
hostname: minio4
container_name: minio4
volumes:
- /opt/minio-cluster/data/node4/drive1:/data/drive1
ports:
- "9004:9000"
- "9094:9090"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server --console-address ":9090" http://minio{1...4}:9000/data/drive{1...1}
networks:
- minio-cluster-net
networks:
minio-cluster-net:
name: minio-cluster-network # 使用共享网络名称
driver: bridge # 标记为外部网络
--console-address ":9090" 这一句的目的是告诉minio,控制台请使用9090这个端口,否则控制台的端口会是随机的, 这样就不好做外网端口映射(如果不是docker就无所谓了)
/opt/minio-cluster/data/node1/drive1 /opt/minio-cluster/data/node2/drive1 /opt/minio-cluster/data/node3/drive1 /opt/minio-cluster/data/node4/drive1,这个几个路径,建议除了node1这个文件夹其他都是一样,方便管理。
目前未解决的问题:无法连接两个池,组成minio集群