当前位置: 首页 > article >正文

存储引用服务(OSS)Minio 环境搭建

  1. 下载Docker desktop

  2. 最好进行相关的设置,比如说进行登陆docker账号等等

    推荐使用 docker-engine源【目前还能使用下载】

    https://ccr.ccs.tencentyun.com

  3. 使用docker拉取对应的minio镜像

    netstat -aon|findstr "8081"

       注意:dockerhub有时访问比较奇怪,有时可以拉取,有时候则不行。 所以可能需要VPN

  4. https://ikuuu.pw/auth/login, 这个是加速器,必要的时候可能会需要使用到。

    因为我已经在早些的时候就已经拉取过一次了,所以有如下的显示。

  1. 进行容器的搭建

      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"

       发现问题:

    1. console-addressip地址要设置为9090,这个是服务器的控制台地址,而我们的address(我看做为发送请求的地址,所以我们需要用这个端口号来发送请求)

    2. 还有就是要注意格式,在启动容器之前不然就会看到很常见的 docker: invalid reference format. 要保证到都有空格区分

  2. 命名

    描述

    -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"
  1. 在cmd黑窗口中输入如下的命令,-p:表示为这个容器集合取一个名字 up:表示创建多个容器
  2. docker-compose -p xf_dockers up -d

    执行过程

  3. 🆗,当我们再次回到docker desktop 的时候就会发现,集群已经成功的启动了,而上面的2-5的容器,是我单独使用docker run【见上面配置】的命令依次配置

  4. 登录测试:

  5. 再次邂逅 docker desktop

  6. 在镜像中已经显现到我们的minio镜像被使用了

    而对应的容器也在对应的端口进行了启动。

    我们可以在logs,日志中,找到客服端访问的路径,并成功的登陆和启动,ps:如果你有在局域网的设备的话,也可以进行访问(一般来说是莫得问题的,不管是使用宿主机还是虚拟机推荐先把防火墙进行关闭,不然会出现各种问题,如请求超时或者拒绝访问等的问题)

  7. 至此,minion服务启动成功!

  8. 百废待兴--开创家业

      5.1 创建用户
  9. 如下页面所示,选择需要的策略【这里默认全选上】,注意这里的用户名不能和上面设置的登陆到客户端的用户名一致!!!

    成功创建后如下显示!

    5.2 创建组群

    下面我们演示,如何进行组群的创建

    下图中,我们可以根据自己的需要,为组群设置一个名字,此外我们还可以设置组群的管理用户。

    创建成功后,我们还可以通过画笔小图标进行修改【添加后续新进入的成员】

  10. 设置秘钥

  11. 直接点击下载

    5.4 创建bucket

    我们需要注意,在为自己的bucket进行命名的时候,要注意满足以下要求的格式

    bucket创建成功!!!

  12. 最佳实践

  13. 6.1 UI方式上传文件

    操作如下:都是点点点,没有什么好说的

    上传成功后,效果展示如下

  14. 编码方式上传文件

  15. 导入相关依赖

            #低版本的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】

  16. 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());
            }
        }
    }
    

    文件上传成功!


http://www.kler.cn/a/369320.html

相关文章:

  • Python小白学习教程从入门到入坑------第十八课 异常模块与包【上】(语法基础)
  • Spring《声明式事务》
  • ReactNative JSI(4)
  • C# 创建型设计模式之----单例模式
  • 【ZZULI】数据库第二次实验
  • JavaEE 多线程第四节 (线程核心操作----线程开始/线程终止)
  • 最新版的 Git+VS Code同步版本管理实践
  • 运维面试汇总
  • [JAVAEE] 面试题(一) - 锁策略, synchronized的详细介绍
  • 标题点击可跳转网页
  • 【32】C++流
  • ETLCloud+Doris组合:数据集成,更简单更高效
  • Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存
  • 【ubuntu18.04】ubuntu18.04 编译LightGBM操作说明
  • 大众点评 web mtgsig 1.2分析
  • AI跟踪报道第62期-本周AI新闻: 微软推出Copilot的AI Agent和Computer Control
  • 【学术会议投稿】Imagen:重塑图像生成领域的革命性突破
  • 深入理解Rust中的指针:裸指针 智能指针
  • Docker:容器
  • 2024 AI 时代:科学计算服务器——科技创新核心动力源
  • k8s 二进制部署安装(三)
  • 08 实战:色彩空间展示(本程序以视频为主)
  • 基于 matlab 计算 TPI(地形位置指数)
  • 2024-10-24 问AI: [AI面试题] 解释自然语言处理 (NLP) 的概念
  • AAPL: Adding Attributes to Prompt Learning for Vision-Language Models
  • RTOS性能测试:R-Rhealstone