-
下载Docker desktop
-
最好进行相关的设置,比如说进行登陆docker账号等等
推荐使用 docker-engine源【目前还能使用下载】
https://ccr.ccs.tencentyun.com
-
使用docker拉取对应的minio镜像
netstat -aon|findstr "8081"
注意:dockerhub有时访问比较奇怪,有时可以拉取,有时候则不行。 所以可能需要VPN
-
https://ikuuu.pw/auth/login, 这个是加速器,必要的时候可能会需要使用到。
因为我已经在早些的时候就已经拉取过一次了,所以有如下的显示。
-
进行容器的搭建
3.1 单容器进行部署
在命令行中(cmd),我们对我们的即将成为容器的镜像进行如下的配置
docker run -d -p 9000:9000 -p 9090:9090 --name minio -e "MINIO_ACCESS_KEY=lucas" -e "MINIO_SECRET_KEY=12345678" -v E:\minioMount\data:/data -v E:\minioMount\config:/root/.minio -d minio/minio server /data --console-address ":9090" -address ":9000"
发现问题:
-
console-addressip地址要设置为9090,这个是服务器的控制台地址,而我们的address(我看做为发送请求的地址,所以我们需要用这个端口号来发送请求)
-
还有就是要注意格式,在启动容器之前不然就会看到很常见的 docker: invalid reference format. 要保证到都有空格区分
-
-
命名
描述
-d
表示这个容器将会在后台进行运行
p 9000:9000 -p 9090:9090
这是端口映射,前一个是服务器的端口,后一个是客户端也就是api接口访问的端口地址
–name minio
这是给新创建的容器命名的选项,名字是 “minio”
-e “MINIO_ACCESS_KEY=lucas
”
用户名
-e “MINIO_SECRET_KEY=12345678”
密码
-v E:\minioMount\data:/data
这意味着将宿主机上的 对应 目录挂载到容器内的 /data 目录,高亮处不要留有空格
-v E:\minioMount\config:/root/.minio
这意味着将宿主机上的 对应 目录挂载到容器内的 /root/.minio 目录,高亮处不要留有空格
-d minio/minio server /data
这是容器内要运行的命令,启动一个名为 “minio” 的服务器,数据存储在 /data 目录下
--console-address ":9090" -address ":9000"
服务器的控制台地址为 “:9090”,服务地址为 “:9000”
3.2 多容器同时进行部署
先查看docker compose的版本
编辑对应的yaml部署信息文件,实际实践当中发现:关于版本的选择,好像没有特别的要求说明
version: 3.1.1
services:
minio6:
image: minio/minio
volumes:
- E:\minioMount\data:/data
- E:\minioMount\config:/root/.minio
ports:
- "9006:9006"
- "9096:9096"
environment:
- MINIO_ACCESS_KEY=lucas
- MINIO_SECRET_KEY=12345678
command: server /data -address ":9006" --console-address ":9096"
minio7:
image: minio/minio
volumes:
- E:\minioMount\data:/data
- E:\minioMount\config:/root/.minio
ports:
- "9007:9007"
- "9097:9097"
environment:
- MINIO_ACCESS_KEY=lucas
- MINIO_SECRET_KEY=12345678
command: server /data -address ":9007" --console-address ":9097"
minio8:
image: minio/minio
volumes:
- E:\minioMount\data:/data
- E:\minioMount\config:/root/.minio
ports:
- "9008:9008"
- "9098:9098"
environment:
- MINIO_ACCESS_KEY=lucas
- MINIO_SECRET_KEY=12345678
command: server /data -address ":9008" --console-address ":9098"
minio9:
image: minio/minio
volumes:
- E:\minioMount\data:/data
- E:\minioMount\config:/root/.minio
ports:
- "9009:9009"
- "9099:9099"
environment:
- MINIO_ACCESS_KEY=lucas
- MINIO_SECRET_KEY=12345678
command: server /data -address ":9009" --console-address ":9099"
- 在cmd黑窗口中输入如下的命令,-p:表示为这个容器集合取一个名字 up:表示创建多个容器
-
docker-compose -p xf_dockers up -d
执行过程
-
🆗,当我们再次回到docker desktop 的时候就会发现,集群已经成功的启动了,而上面的2-5的容器,是我单独使用docker run【见上面配置】的命令依次配置
-
登录测试:
-
再次邂逅 docker desktop
-
在镜像中已经显现到我们的minio镜像被使用了
而对应的容器也在对应的端口进行了启动。
我们可以在logs,日志中,找到客服端访问的路径,并成功的登陆和启动,ps:如果你有在局域网的设备的话,也可以进行访问(一般来说是莫得问题的,不管是使用宿主机还是虚拟机推荐先把防火墙进行关闭,不然会出现各种问题,如请求超时或者拒绝访问等的问题)
-
至此,minion服务启动成功!
-
百废待兴--开创家业
5.1 创建用户
-
如下页面所示,选择需要的策略【这里默认全选上】,注意这里的用户名不能和上面设置的登陆到客户端的用户名一致!!!
成功创建后如下显示!
5.2 创建组群
下面我们演示,如何进行组群的创建
下图中,我们可以根据自己的需要,为组群设置一个名字,此外我们还可以设置组群的管理用户。
创建成功后,我们还可以通过画笔小图标进行修改【添加后续新进入的成员】
-
设置秘钥
-
直接点击下载
5.4 创建bucket
我们需要注意,在为自己的bucket进行命名的时候,要注意满足以下要求的格式
bucket创建成功!!!
-
最佳实践
-
6.1 UI方式上传文件
操作如下:都是点点点,没有什么好说的
上传成功后,效果展示如下
-
编码方式上传文件
-
导入相关依赖
#低版本的okhttp会报错提示 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.0</version> </dependency> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.4.2</version> <exclusions> <exclusion> <artifactId>okhttp</artifactId> <groupId>com.squareup.okhttp3</groupId> </exclusion> </exclusions> </dependency>
测试用例 注意修改对应的文件和相关的地址【代码仅供参考,不宜直接CV】
-
import io.minio.BucketExistsArgs; import io.minio.MakeBucketArgs; import io.minio.MinioClient; import io.minio.UploadObjectArgs; import io.minio.errors.MinioException; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class FileUploader { public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException { try { // Create a minioClient with the MinIO server playground, its access key and secret key. MinioClient minioClient = MinioClient.builder() .endpoint("http://192.168.1.110:9000") .credentials("XO1JDovW2FTmGaBb", "uG6wMfylUnOVH5WzwxqnldOWw2dMshNX") .build(); // Make 'asiatrip' bucket if not exist. boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build()); if (!found) { // Make a new bucket called 'asiatrip'. minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build()); } else { System.out.println("Bucket 'public' already exists."); } // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket // 'asiatrip'. minioClient.uploadObject( UploadObjectArgs.builder() .bucket("public") .object("credentials.json") .filename("C:/Users/lai.huanxiong/Downloads/credentials.json") .build()); System.out.println("'C:/Users/lai.huanxiong/Downloads/credentials.json' is successfully uploaded as " + "object 'credentials.json' to bucket 'public'."); } catch (MinioException e) { System.out.println("Error occurred: " + e); System.out.println("HTTP trace: " + e.httpTrace()); } } }
文件上传成功!