title: Docker部署MinIO
date: 2024-08-02
tags: docker
Docker部署MinIO
一、单节点部署
1、获取minio镜像
1
| docker pull minio/minio:RELEASE.2021-04-22T15-44-28Z
|
2、启动
1 2 3 4 5 6
| docker run -p 9000:9000 --name minio1 \ -d --restart=always \ -v /data/middleware/minio/data1:/data \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=Abc@123.." \ minio/minio:RELEASE.2021-04-22T15-44-28Z server /data
|
二、集群部署(单服务器)
1、创建minio网络
1
| docker network create --subnet=172.19.0.0/16 minio-net
|
2、启动四个节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| # minio1 docker run -id \ --name=minio1 \ --restart=always \ -p 9100:9000 \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data/minios/minio1/data1:/data1 \ -v /data/minios/minio1/data2:/data2 \ --network minio-net --ip 172.19.0.2 \ minio/minio:RELEASE.2021-04-22T15-44-28Z server \ -address ":9000" \ http://172.19.0.{2...5}/data{1...2} # minio2 docker run -id \ --name=minio2 \ --restart=always \ -p 9200:9000 \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data/minios/minio2/data1:/data1 \ -v /data/minios/minio2/data2:/data2 \ --network minio-net --ip 172.19.0.3 \ minio/minio:RELEASE.2021-04-22T15-44-28Z server \ -address ":9000" \ http://172.19.0.{2...5}/data{1...2} # minio3 docker run -id \ --name=minio3 \ --restart=always \ -p 9300:9000 \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data/minios/minio3/data1:/data1 \ -v /data/minios/minio3/data2:/data2 \ --network minio-net --ip 172.19.0.4 \ minio/minio:RELEASE.2021-04-22T15-44-28Z server \ -address ":9000" \ http://172.19.0.{2...5}/data{1...2} # minio4 docker run -id \ --name=minio4 \ --restart=always \ -p 9400:9000 \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /data/minios/minio4/data1:/data1 \ -v /data/minios/minio4/data2:/data2 \ --network minio-net --ip 172.19.0.5 \ minio/minio:RELEASE.2021-04-22T15-44-28Z server \ -address ":9000" \ http://172.19.0.{2...5}/data{1...2}
|
3、nginx配置
因为MinIO后台使用了WebSocket技术,需要在nginx上配置Upgrade、Connection等请求头来支持WebSocket的转发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| upstream minioserver{ server 172.19.0.2:9000; server 172.19.0.3:9000; server 172.19.0.4:9000; server 172.19.0.5:9000; }
server { listen 9000; server_name localhost; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://minioserver; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
|
启动nginx容器
1 2 3 4 5 6 7 8
| docker run -d \ --name nginx \ -p 80:80 \ -p 9000:9000 \ -v /data/middleware/nginx/conf.d/:/etc/nginx/conf.d/ \ -v /etc/localtime:/etc/localtime \ --network minio-net --ip 172.19.0.6 \ nginx
|
注意!
1 2
| 在进行集群部署的时候一直出现各种报错,集群部署好了,nginx开始出错,最后发现是容器之间网络的问题,之后尝试创建一个minio-net网络,并给所有容器配置同一个网络,因为minio集群部署以及nginx转发需要指定IP,因此在配置的时候指定了IP,这些问题主要是在同一台服务器上部署minio集群的时候会出现。 在使用dockercompose部署的时候也需要注意容器之间的网络问题
|