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

news2024/10/28 23:07:30
  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.coloradmin.cn/o/2225763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT访问数据库:应用提示Driver not loaded

在QT中运行完全正确错误截图 解决办法 我用的是MySQL。我把libmysql.dll复制到应用程序的目录下&#xff0c;即可正常访问数据库。

Hugging Face 使用指南——并行智算云(10s上手版)

1. 在bash中使用 1.1 直接复制命令 echo export HF_ENDPOINT"https://hf-mirror.com" >> ~/.bashrc # 在bashrc文件中设置镜像地址 source ~/.bashrc # 使修改立即生效 echo $HF_ENDPOINT # 查看是否成功红框部分出现就是正确了 1.2 命令详解 命令行echo…

HarmonyOS开发 - 本地持久化之实现LocalStorage支持多实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 在上一篇中&…

CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)

最近在学习CodeQL&#xff0c;对于CodeQL就不介绍了&#xff0c;目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记&#xff0c;根据个人知识库笔记修改整理而来的&#xff0c;分享出来共同学习。个人觉得QL的语法比较反人类&#xff0c;至少与目前主流的这些OOP语言相比&…

计算机视觉专栏(2)【LeNet】代码实战【pytorch】完整可运行

LeNet 系列 实践部分1.引言2. limu代码3. plpal代码3.1 代码调试3.2 代码详解 4. 总结 实践部分 Lenet的实现分为两种代码&#xff0c;一种是李沐老师的实现代码以及b友up霹雳啪啦的代码&#xff0c;两者都有不同的优点&#xff0c;李老师的lenet十分还原原著中的操作&#xf…

ios 项目升级极光SDK

由于项目使用的是旧版本&#xff0c;隐私合规检查不通过&#xff0c;需要升级到最新版本&#xff0c; 使用cocoapods集成无法正常运行&#xff0c;.a文件找不到&#xff0c;可能项目比较久了&#xff0c;最好选择手动导入 下载最新版本SDK&#xff0c;将 SDK 包解压&#xff…

IROS 2024最新接收的Motion Planning前沿研究成果汇总

No.1 文章标题&#xff1a;Extended Tree Search for Robot Task and Motion Planning 作者&#xff1a;REN, Tianyu; Chalvatzaki, Georgia; Peters, Jan 中文标题&#xff1a;机器人任务和运动规划的扩展树搜索 No.2 文章标题&#xff1a;Kinodynamic Motion Planning fo…

Jmeter分布式性能测试细节+常见问题解决

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Jmeter分布式测试时需要的特别注意 1&#xff09;参数化文件的位置和内容 如果使用csv文件进行参数化&#xff0c;即通过读取csv文件中的数据来为测试脚本提供…

C/C++每日一练:实现选择排序

选择排序 选择排序是一种简单直观的排序算法&#xff0c;时间复杂度为&#xff0c;其中 n 是数组长度&#xff0c;不适合大数据集的排序&#xff0c;适合于元素较少且对性能要求不高的场景。 选择排序的基本思想是&#xff1a;每次从未排序部分选择最小的元素&#xff0c;将其放…

[四轴飞行器] 遥控器操作说明

遥控器操作说明 1 A&#xff1a;无线连接信号强度&#xff1a;已连接 B&#xff1a;控制模式&#xff1a;H定高模式,T定点模式 C&#xff1a;遥控器状态&#xff1a;加锁 D&#xff1a;飞行模式&#xff1a;无头 E&#xff1a;电量显示&#xff1a;遥控器电量&#xff08;加…

OpenCV系列教程六:信用卡数字识别、人脸检测、车牌/答题卡识别、OCR

文章目录 一、信用卡数字识别1.1 模板匹配1.2 匹配多个对象1.3 处理数字模板1.4 预处理卡片信息&#xff0c;得到4组数字块。1.5 遍历数字块&#xff0c;将卡片中每个数字与模板数字进行匹配 二、人脸检测2.1人脸检测算法原理2.2 OpenCV中的人脸检测流程 三、车牌识别3.1 安装t…

Jupyter Notebook 中使用render_notebook渲染pyecharts图像不显示的一种情况

一开始我发现自己的jupyter文件在渲染pyecharts图片时一开始可以显示&#xff0c;但后来不知道怎么的就不显示了&#xff0c;查找了很多方法&#xff0c;但是没有效果&#xff0c;都是改js渲染什么的&#xff0c;还有就是参数不对的&#xff0c;对于我来说都没什么用&#xff0…

Pytorch学习--DataLoader的使用

一、DataLoader简介 DataLoader官网 重要参数&#xff1a;画红框的参数 dataset: 作用&#xff1a;表示要加载的数据集。DataLoader通过该参数从数据集中读取数据。类型&#xff1a;Dataset&#xff0c;即PyTorch定义的Dataset类&#xff0c;用于封装数据并提供数据索引的功…

C++第八讲:STL--stack和queue的使用及模拟实现

C第八讲&#xff1a;STL--stack和queue的使用及模拟实现 1.stack的使用2.queue的使用3.栈和队列OJ题3.1题目1&#xff1a;最小栈3.2题目2&#xff1a;栈的压入、弹出序列3.3题目3&#xff1a;逆波兰表达式求值3.4题目4&#xff1a;用栈实现队列 4.栈的模拟实现5.队列的模拟实现…

BFS解决最短路问题(4)_为高尔夫比赛砍树

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 BFS解决最短路问题(4)_为高尔夫比赛砍树 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48…

LeetCode-684. 冗余连接

. - 力扣&#xff08;LeetCode&#xff09; 题目 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于…

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

Python | Leetcode Python题解之第509题斐波那契数

题目&#xff1a; 题解&#xff1a; class Solution:def fib(self, n: int) -> int:if n < 2:return nq [[1, 1], [1, 0]]res self.matrix_pow(q, n - 1)return res[0][0]def matrix_pow(self, a: List[List[int]], n: int) -> List[List[int]]:ret [[1, 0], [0, …

1 环境配置、创建功能包、编译、Cmake文件及package文件学习笔记

1 基本结构 放张 赵虚左老师的pdf截图 2 环境配置 //每次都需配置 . install/setup.bash//或者一次配置echo "source /path/to/your/workspace_name/install/setup.bash" >> ~/.bashrcsource ~/.bashrc3 创建功能包 ros2 pkg create 包名--build-type 构建类…

气象监测软件的程序设计

老师留了个作业&#xff0c;感觉挺有意思&#xff0c;记录一下 文章目录 气象监测软件的程序设计项目指导书&#xff08;一&#xff09;基本信息&#xff08;二&#xff09;项目目标&#xff08;三&#xff09;任务描述&#xff08;四&#xff09;指导内容任务 1&#xff1a;根…