docker安装minio

1、单一节点

  1. 下载

# docker pull minio/minio:latest

  1. 配置启动

启动命令:

#!/bin/bash
docker run --name minio \
-p 9000:9000 \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-v /app/minio/data:/data \
-v /app/minio/config:/root/.minio \
-d \
minio/minio server /data

命令截图:

  1. 访问
http://192.168.56.103:9000/minio

上传并查看上传的图片。

多目录

在一个容器里面的多个目录,这个容器所挂载的所有目录,将不再被访问,所以,必须要在真机的情况下,一般也是一个真机1到4个目录,此处供您学习多目录使用。

启动命令,注意启动最后设置的目录为:data{1...4}这样写目录的目的是可以方便以后扩展。

命令截图:

命令文本:

#!/bin/bash
docker run --name minio \
-p 9000:9000 \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-v /app/minio/datas:/datas \
-v /app/minio/config:/root/.minio \
-d \
minio/minio server /datas/data{1...4}

建议最少是4个目录:

如果有文件被上传到minio的文件系统中,则文件被分块存储,

这样保存的文件将如下格式:

3、多目录+可分布式

建议,创建一个独立的网卡,可以为以后扩展分布式做准备。

步1、创建网卡

# docker network create mynet

步2、启动dokcer

注意:--name 指定了此容器的名称,也就是主机的名称。

--network 指定了使用自己创建的网卡。

http://中minioc1为容器的名称,/datas/data{1...4}是指在容器根目录下,创建datas及下面的4个子目录。

然后通过-v将容器中的目录影射出来。

其中-v 也可以设置为9001:9000即将容器中的9000影射为本机的9001端口。

注意名称为:minioc1,则server的地方的地址为:

#!/bin/bash
docker run --name minioc1 \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin123456 \
-v /app/docker/minioc/datas:/datas \
-v /app/docker/minioc/conf:/root/.minio \
-p 9000:9000 \
--network mynet \
minio/minio \
server http://minioc1/datas/data{1...4}

命令截图:

2021-10-13号以后版本,多个两个参数在server后面一个是--address一个是console-address:

#!/bin/bash
docker run --name minio2 \
-p 38002:8000 -p 39002:9000 \
-v /mnt/data2:/datas \
-e "MINIO_ROOT_USER=root" -e "MINIO_ROOT_PASSWORD=12345678" \
--network net1 \
minio/minio server \
http://172.18.0.{2..3}:9000/datas/data{1..2} \
--address ":9000" --console-address ":8000" &

通过帮助,可以查看启动是的命令参数:

2021-10-21 版本启动变化:

#!/bin/bash
docker run -p 9000:9000 \
-p 3309:3309 --name minio1 \
-e "MINIO_ROOT_USER=root" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server \
--console-address ":3309" \
--address ":9000" \
/data

以下是新版本添加的参数,--consoloe-address,注意上面的版本中没有这个参数:

4、docker集群

以下是在同一台主机上,启动多个docker容器,可以让您快速学习minio集群的方式,方便扩展为真机集群。

脚本,注意目录影射,注意端口影射。以下配置文件,配置多个如start01.sh,start02.sh,分别修改里面的server和localport的值。

1、创建启动的脚本文件

start01.sh:

命令文本:

#!/bin/bash
server1="minioc1"
server2="minioc2"
server=$server1
localport=9001
docker run --name $server \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin123456 \
-v /app/docker/$server/datas:/datas \
-v /app/docker/$server/conf:/root/.minio \
-p $localport:9000 \
--network mynet \
minio/minio \
server http://$server1/datas/data{1...4} http://$server2/datas/data{1...4}

start02.sh:

命令文本:

#!/bin/bash
server1="minioc1"
server2="minioc2"
server=$server1
localport=9001
docker run --name $server \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin123456 \
-v /app/docker/$server/datas:/datas \
-v /app/docker/$server/conf:/root/.minio \
-p $localport:9000 \
--network mynet \
minio/minio \
server http://$server1/datas/data{1...4} http://$server2/datas/data{1...4}

现在分别启动这两个配置文件,刚开始启动的配置文件,因为找不到另一个服务器的地址会抛出异常,不过没有关系,启动第二个配置文件并两个minio关联上以后,就可以正常使用了。

2、查看文件

现在分另访问 9001和9002端口:

http://server104:9001

http://server104:9002

并上传一些文件,可以看到相同的数据文件。

查看影射出来的文件数据,minioc1的文件目录,可以看到存的内容,是有不同的的。

minioc2的文件数据:

3、更多测试

现在我们上传一个文件:

设置112桶为读写:

直接通过9001和9002端口访问此文件,都可以访问到。

http://server104:9001/112/1.png

http://server104:9002/112/1.png

查看后台存储,发现此文件只存在于minioc1这台服务器上,如果这样的话,一旦minioc1服务器宕机则此图片应该不可以访问,以下是数据存储结构:

现在关闭minioc1:

root@server104:/app/docker# docker stop minioc1
minioc1

再去访问此图片,则失败。

4、添加新的节点

经过测试minio的集群节点最少应该是4,且建议是4的倍数,所以,如果是三台服务器,应该不是不可以创建集群的。最少4台。

现在修改版本,并接收参数:

说明:server=$1接收第一个参数,依次类推。

注意最后一个行,minio{1...$size}即为minio{1...4}传递的的size数量就是最大数量,最小为4。

#!/bin/bash
server=$1
port=$2
size=$3
echo $server $port $size
docker run --name $server \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=admin123456 \
-v /app/docker/$server/datas:/datas \
-v /app/docker/$server/conf:/root/.minio \
-p $port:9000 \
--network mynet \
-d \
minio/minio \
server http://minio{1...$size}/datas/data{1...4}

依次启动4个服务如下:

./start.sh minio1 9001 4
./start.sh minio2 9002 4
./start.sh minio3 9003 4
./start.sh minio4 9004 4

启动后,查看日志:

root@server104:/app/docker# docker logs -f minio1

一开始有一些错误,所有的都上线以后,就可以使用了。

Waiting for all other servers to be online to format the disks.
Formatting 1st pool, 1 set(s), 16 drives per set.
Waiting for all MinIO sub-systems to be initialized.. lock acquired
All MinIO sub-systems initialized successfully
Waiting for all MinIO IAM sub-system to be initialized.. lock acquired
Status: 16 Online, 0 Offline.
Endpoint: http://172.19.0.2:9000 http://127.0.0.1:9000
Browser Access:
http://172.19.0.2:9000 http://127.0.0.1:9000
Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
IAM initialization complete
现在上传一个文件:

查看影射到本地目录中的文件,可以看出,在每一个服务器上,都保存了一份:

# docker stop minio4

现在测试让其中一台服务器下线,发现,除此一台不能用之外,其他几台还可以使用。

现在在三台服务器运行的情况下,上传一个文件后,发现第4台的目录中并没有此文件,然后再重新启动第4台服务器,发现数据会自动的同步到第4台服务器中去。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章