使用Docker搭建minio

一、docker配置镜像源问题

  • docker国内镜像可能会无法使用,建议多配置数据源
  • 使用"i",进入编辑。使用"ESC"->":wq"保存并退出
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://4xxwxhl6.mirror.aliyuncs.com","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://docker.nju.edu.cn","https://6kx4zyno.mirror.aliyuncs.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://dockerproxy.com"]
}

二、docker拉取镜像

  • 切换用户至root
  • 拉取镜像源
docker pull minio/minio
  • 配置挂载目录和上传文件目录
mkdir -p /opt/minio/config

mkdir -p /opt/minio/data
  • 创建容器并运行
docker run \
-p 9000:9000 \
-p 9001:9001 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /opt/minio/data:/data \
-v /opt/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9001" -address ":9000"

注意:

  • 设置密码时,3-8个字符,但是我使用"123456",容器运行成功,但是无法访问,停止容器(docker stop minio)删除容器(docker rm minio),重新设置密码
  • 使用 虚拟机ip:9001访问
  • springBoot集成的话,使用9000端口

查看minio

  • 使用虚拟机ip:9001查看
1、新建Bucket
  • 点击左侧Buckets
  • 为Bucket取一个合适的名字
  • 新建Bucket
    在这里插入图片描述
2、 新建Access Key
  • 点击左侧 Access Keys,
  • 记下Access Key 和 Secter Key
  • 设置name
  • 点击create新建Browser
    在这里插入图片描述
    需要 Access Key 和 Secter Key 来访问Bucket

虚拟机下载安装Cpolar

  • 使用脚本一键安装
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

在这里插入图片描述

在这里插入图片描述

  • 安装成功,提示使用systemctl enable cpolar 命令和 systemctl start cpolar命令
  • 使用systemctl enable cpolar 命令 启用cpolar
    在这里插入图片描述
  • 使用 systemctl start cpolar命令 启动cpolar
    在这里插入图片描述
  • 在浏览器使用 虚拟机ip:9200 访问cpolar
    在这里插入图片描述
  • 注册用户
    在这里插入图片描述
  • 返回登录
    在这里插入图片描述
  • 点击左侧隧道管理,创建新隧道
    在这里插入图片描述
  • 点击在线隧道列表,查看新建隧道
    在这里插入图片描述
    • 由于后续安装的elasticsearch端口也为9200,故在此处贴上修改cpolar端口

    • 查看9200端口信息
      在这里插入图片描述

    • 停止正在运行的cpolar systemctl stop cpolar
      在这里插入图片描述

    • 使用 find / -name cpolar.yml 2>/dev/null 查看yml文件
      在这里插入图片描述

    • 查看官网教程
      在这里插入图片描述

    • 执行vi /usr/local/etc/cpolar/cpolar.yml
      在这里插入图片描述

    • 添加配置client_dashboard_addr: 127.0.0.1:9300,注意,官网修改只能虚拟机内部访问,外部无法访问
      在这里插入图片描述

    • 如果需要外部访问的话,此处需要改为 虚拟机ip:端口号
      在这里插入图片描述

    • 启动服务sudo systemctl start cpolar

    • 未停止服务的话,使用重启服务sudo systemctl restart cpolar

    • 测试是否修改成功
      在这里插入图片描述

    • 如果在线隧道列表无隧道,前往隧道管理启动相应隧道

SpringBoot集成使用

  • 在pom中引入jar包
#低版本的okhttp会报错提示         
 <dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.7</version>
  </dependency>
 
  <dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.10.0</version>
  </dependency>
  • 上传代码测试
    @Test
    void uploadtest(){
        try{
            String endPoint = "8.tcp.cpolar.top";
            int port = 13981;
            String accessKey = "YsBvivSZUGsRLfqL2JXL";
            String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa";
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(endPoint,port,false)
                    .credentials(accessKey,secretKey)
                    .build();
            // 定义桶名和对象名称
            String bucketName = "gulimall";
            String objectName = "test.jpg";
            String filePath = "E:\\uploadFile\\gulimall/p23.png"; // 本地文件路径
            minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket(bucketName)
                            .object(objectName)
                            .filename(filePath)
                            .build());
            System.out.println("上传测试成功........");
        }catch (Exception e){
            System.out.println("Error" + e);
        }
    }
  • 提交报错(提示 请求时间和服务器时间之间的差异太大)
Errorerror occurred
ErrorResponse(code = RequestTimeTooSkewed, message = The difference between the request time and the server's time is too large., bucketName = null, objectName = null, resource = /gulimall, requestId = 17EC67767F4197ED, hostId = dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8)
  • 在虚拟机使用chronyd同步时间
  • 使用 yum install chronyd安装
  • 启用chronyd 服务 systemctl enable chronyd
  • 启动 chronyd 服务 systemctl start chronyd
  • 同步时间 chronyc makestep
  • 使用 date 检查 (我再次检查,发现时间依旧不对,最后检查发现,时区未设置为上海)
  • 设置时区为上海 timedatectl set-timezone Asia/Shanghai
  • 再次使用 date 检查,时间调整成功
    在这里插入图片描述
  • 再次测试提交,测试成功
    在这里插入图片描述
  • 下载代码测试
@Test
    void downLoad(){
        try {
            String endPoint = "8.tcp.cpolar.top";
            int port = 13981;
            String accessKey = "YsBvivSZUGsRLfqL2JXL";
            String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa";
            // 创建 MinIO 客户端
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(endPoint,port,false)
                    .credentials(accessKey, secretKey)
                    .build();

            String bucketName = "gulimall";
            String objectName = "test.jap";
            String filePath = "E:\\downloadFile\\gulimall/p23.png"; // 本地文件路径
            // 下载文件
            minioClient.downloadObject(
                    DownloadObjectArgs.builder()
                            .bucket(bucketName)
                            .object(objectName)
                            .filename(filePath)
                            .build()
            );
            System.out.println("文件下载成功: " + filePath);

        } catch (Exception e) {
            System.out.println("Error occurred: " + e);
        }
    }

在这里插入图片描述

通过地址访问上传内容

  • 点击自己的bucket
  • 设置自己的bucket为公开
    在这里插入图片描述
  • 点击Access Policy后面的小铅笔或者下面的public
    在这里插入图片描述
  • 从private改为publlic
    在这里插入图片描述
  • 查看上传的文件地址
    在这里插入图片描述
  • 浏览器输入 虚拟机ip:9000/ 上传的文件地址
    在这里插入图片描述
使用Docker搭建Minio,首先需要下载Minio镜像。使用命令`docker pull minio/minio`可以下载最新版的Minio镜像,相当于`docker pull minio/minio:latest`。如果需要下载特定版本的Minio镜像,可以使用命令`docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips`,其中RELEASE.2022-06-20T23-13-45Z.fips是具体的版本号。 接下来,使用单行模式或多行模式的命令来运行Minio容器并配置。下面是单行模式命令的示例: ``` docker run -p 9000:9000 -p 9090:9090 --net=host --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" -v /home/minio/data:/data -v /home/minio/config:/root/.minio minio/minio server /data --console-address ":9090" -address ":9000" ``` 而多行模式的命令示例如下: ``` docker run -p 9000:9000 -p 9090:9090 \ --net=host \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=minioadmin" \ -e "MINIO_SECRET_KEY=minioadmin" \ -v /home/minio/data:/data \ -v /home/minio/config:/root/.minio \ minio/minio server \ /data --console-address ":9090" -address ":9000" ``` 以上命令中的参数说明如下: - `-p`参数用于指定端口映射,将主机的9000端口映射到Minio容器的9000端口,将主机的9090端口映射到Minio容器的9090端口。 - `--net=host`参数用于将容器与主机共享网络命名空间,使得容器可以访问主机的网络资源。 - `--name`参数用于指定容器的名称,这里将容器命名为minio。 - `-d --restart=always`参数用于将容器以守护进程方式运行,并设置容器在重启后自动启动。 - `-e`参数用于设置Minio的访问密钥和密钥,这里将访问密钥设置为"minioadmin",密钥也设置为"minioadmin"。 - `-v`参数用于指定容器的数据存储和配置文件目录,这里将主机的`/home/minio/data`目录挂载到容器的`/data`目录,将主机的`/home/minio/config`目录挂载到容器的`/root/.minio`目录。 - `minio/minio`是Minio镜像的名称。 - `server /data`是启动Minio服务器的命令,其中`/data`是数据存储目录。 - `--console-address ":9090" -address ":9000"`参数用于设置Minio的控制台地址和服务器地址,这里控制台地址为":9090",服务器地址为":9000"。 通过执行上述命令,就可以在Docker搭建Minio并进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker 搭建 Minio 容器 (完整详细版)](https://blog.csdn.net/BThinker/article/details/125412751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值