使用docker搭建minio集群搭建

本文详细介绍了在虚拟机上使用Docker和Docker Compose搭建Minio集群的过程,包括解决SELinux兼容性问题、配置国内镜像源、单节点测试及多节点集群部署等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作中需要搭建单独的图像服务器,经过在fastDFS和Minio之间选型,最终选择了Minio,因为是Apache的开源项目,而且实现了Amazon S3协议。以下是搭建的过程,以及可能碰到的坑,做一个备忘:

第一步,当然是要在虚拟机上安装好docker以及docker-compose。

1、安装docker比较简单,网络上资料太多,但在Yunos7上面还是会碰到selinux的坑——报错“Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disabl...nabled=false)”,应该是这个Yunos镜像的linux的内核中的SELinux不支持 overlay2 graph driver 。解决方法有两个:

1)要么启动一个新内核。已经用yum install -y kernel 实践,发现坑很大。升级内核后服务器完全起不来,报“kernel panic - not syncing”错误,所以放弃。

2)要么就在docker配置文件里面里禁用selinux,--selinux-enabled=false。打开/etc/sysconfig/docker 把--selinux-enabled参数设置为false,重新systemctl start docker启动docker服务即可

3)设置国内镜像。不同linux略有差异。我的是centos,只要在/etc/docker/daemon.json中加入"registry-mirrors":"https://registry.docker-cn.com"]”即可。然后“systemctl restart docker”。

2、安装docker compose相对折腾点,网络上有两种方法,一种是直接curl 下载,一种是用pip安装,后一种方法时间长,但比较顺畅。

1)先从github下载最新版的docker-compose文件 

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

2)如果github太慢,可以从 daocloud下载

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

3)添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

第二步,可以先起一个单节点的minio试试,具体指令如下:

docker run --rm --name myminio -p 9000:9000 -v /home/minio/data:/data -v /home/minio/config:/root/.minio minio/minio server /data

如果打开浏览器,输入"http://你虚拟机的ip:9000"可以看到minio的登陆界面,说明已经成功。

第三步,准备minio集群的yml文件,共分4个容器,8个目录。

version: '3.7'

# starts 4 docker containers running minio server instances. Each
# minio server's web interface will be accessible on the host at port
# 9001 through 9004.
services:
  minio1:
    image: minio/minio
    volumes:
      - data1-1:/data1
      - data1-2:/data2
    ports:
      - "9001:9000"
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio2:
    image: minio/minio
    volumes:
      - data2-1:/data1
      - data2-2:/data2
    ports:
      - "9002:9000"
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio3:
    image: minio/minio
    volumes:
      - data3-1:/data1
      - data3-2:/data2
    ports:
      - "9003:9000"
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio4:
    image: minio/minio
    volumes:
      - data4-1:/data1
      - data4-2:/data2
    ports:
      - "9004:9000"
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: server http://minio{1...4}/data{1...2}
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

## By default this config uses default local driver,
## For custom volumes replace with volume driver configuration.
volumes:
  data1-1:
  data1-2:
  data2-1:
  data2-2:
  data3-1:
  data3-2:
  data4-1:
  data4-2:

第四步,执行docker-compose命令,启动minio集群

docker-compose pull
docker-compose up

如果没有报错,并且显示了4台docker容器同时起来,说明minio集群已经成功运行。

这个时候可以在浏览器中输入“http://你虚拟机的ip:9001”,看是否可以进入登录界面。如果无法访问,说明网络配置存在问题,docker容器和虚拟机之间无法双向通信,需要寻找解决办法。

总结

minio集群部署不难,而且部署完成后,4台服务器均能自动同步。只要你的服务器保持4/2=2个以上,就可以正常读写,不用担心文件丢失,如果只剩下2个服务器正常,则只能下载,无法上传。如果只剩下1台服务器运转,那就只能重新部署了。

好的,下面是使用docker搭建minio分布式集群的详细步骤: 1. 安装DockerDocker Compose 您需要在您的机器上安装DockerDocker Compose。如果您还没有安装,请先安装。 2. 创建docker-compose.yml文件 在您的工作目录下创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中。 ``` version: '3' services: minio1: image: minio/minio container_name: minio1 command: server http://minio{1...4}/data{1...4} ports: - "9001:9000" volumes: - ./data1:/data1 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio2: image: minio/minio container_name: minio2 command: server http://minio{1...4}/data{1...4} ports: - "9002:9000" volumes: - ./data2:/data2 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio3: image: minio/minio container_name: minio3 command: server http://minio{1...4}/data{1...4} ports: - "9003:9000" volumes: - ./data3:/data3 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always minio4: image: minio/minio container_name: minio4 command: server http://minio{1...4}/data{1...4} ports: - "9004:9000" volumes: - ./data4:/data4 environment: MINIO_ACCESS_KEY: YOUR_ACCESS_KEY MINIO_SECRET_KEY: YOUR_SECRET_KEY restart: always ``` 3. 启动集群 在您的工作目录中运行以下Docker Compose命令,以启动Minio集群。 ``` docker-compose up -d ``` 这将在您的机器上启动四个Minio容器,每个容器都有一个自己的数据卷,并且它们都在同一网络中。 4. 访问Minio UI 您可以在浏览器中访问http://localhost:9001/,并使用您的访问密钥和秘密密钥登录Minio UI。您将看到一个名为“data1”的存储桶已经被创建。 5. 添加其他节点 如果您需要添加其他节点,请在docker-compose.yml文件中添加另一个服务,并使用相同的access key和secret key。您还需要在Minio UI中添加新的节点。 这些是使用Docker Compose搭建Minio分布式集群的基本步骤。如果您需要更详细的指导,请查看Minio官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值