docker(二十六)docker-compose部署minio集群

130 阅读3分钟

Docker插件部署继续,这里部署minio分布式对象存储系统

 

为了保证高可用,我这里采用集群部署。如果你不想使用docker部署,请移步《SpringBoot(十八)SpringBoot集成Minio

 

今儿是新药方,没有docker命令部署,只有docker-compose部署。

 

docker-compose.yml:内容写如下:

version: "3.8"
services:
  minio1:
    image: minio/minio:RELEASE.2024-05-10T01-41-38Z
    volumes:
      # - m1_data:/data
      - /opt/docker/minio/data1:/data
    networks:
      - minio-network
    ports:
      - "9002:9000"
      - "9001:9001"
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=camellia
    command: server http://minio{1...3}/data --console-address ":9001"
 
  minio2:
    image: minio/minio:RELEASE.2024-05-10T01-41-38Z
    volumes:
      # - m2_data:/data
      - /opt/docker/minio/data2:/data
    networks:
      - minio-network
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=camellia
    command: server http://minio{1...3}/data --console-address ":9001"
 
  minio3:
    image: minio/minio:RELEASE.2024-05-10T01-41-38Z
    volumes:
      # - m3_data:/data
      - /opt/docker/minio/data3:/data
    networks:
      - minio-network
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=camellia
    command: server http://minio{1...3}/data --console-address ":9001"
 
# volumes:
#   m1_data:
#   m2_data:
#   m3_data:
 
networks:  # 加入公共网络(没有这个网络,你需要提前创建)
  minio-network:
    external: true

 

这个文件定义了一个 MinIO 集群,其中包含三个节点:minio1、minio2 和 minio3。每个节点都使用 MinIO 的官方 Docker 镜像,并将 MinIO 服务暴露在 9000、9001 端口上。此外,每个节点都设置了管理员用户名和密码。

 

这里需要逐一解释一下:

 

Services:配置容器,我这里配置了三个节点,分别是:minio1、minio2、minio3,Docker Compose 会将每个服务部署在各自的容器中。在这里我们没有自定义容器名称,而是使用容器的默认名称,在这分别为 minio1-1、minio2-1 以及 minio3-1。

 

volumes 配置用于声明 Docker Compose 创建新的数据卷 m1_data、m2_data 以及 m3_data。我们只负责声明,不需要手动创建,Docker Compose 会自动管理。默认情况下,在容器删除之后数据会丢失。为了解决这个问题,我们需要三个服务分别使用声明中的数据卷来将数据保存在宿主机上。但是,最后我就不用了,我在service中指定对应容器的volumes 配置卷。

 

networks 配置用于声明服务要连接的网络 pub-network。external: true 表示网络是在 Docker Compose 配置文件之外定义的,即它已经存在了,Docker Compose 不需要尝试创建它。只要加入这个网络的服务就能够实现项目容器间以及跨项目通信。

docker network create minio-network

 

ports :配置用来将容器的端口映射到宿主机的端口,使得宿主机能够与集群进行通信,对于 MinIO 的分布式集群来说,节点之间的通信是在内部 Docker 网络中进行的,无需额外的端口映射。只有外部客户端需要访问集群时,才需要一个入口点,所以不需要为集群中的每个节点都映射端口到宿主机。我们只需要为集群中的一个节点映射端口即可。

因此我这里只在minio1中配置了对应的端口访问,minio默认9000端口访问。9001端口为minio控制台访问端口。

 

command 配置指定容器启动时运行的命令。它告诉 MinIO 以分布式模式启动,并且包括所有三个定义的节点。--console-address ":9001" 指定了 MinIO 管理控制台的地址。对每个服务都定义了相同的启动命令,这是为了确保每个节点都具备相同的配置信息以协同工作。

 

以上大概就是docker部署minio集群的全过程,以及对应的解释。

 

有好的建议,请在下方输入你的评论。