使用Docker搭建minio的详细图文教程

 更新时间:2024年10月23日 08:32:38   作者:反方向的钟o.0  
本文介绍了Docker配置镜像源的方法,以及如何在Docker中拉取镜像和创建运行容器,详细说明了使用MinIO创建Bucket、设置AccessKey、安装和配置Cpolar以及SpringBoot集成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的文章就介绍到这了,更多相关Docker搭建minio内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker-compose ports和expose的区别详解

    docker-compose ports和expose的区别详解

    这篇文章主要介绍了docker-compose ports和expose的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • docker操作Permission denied无权限的问题解决

    docker操作Permission denied无权限的问题解决

    我们日常需要docker环境进入容器配置或查看一些文件,本文主要介绍了docker操作Permission denied无权限的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Docker如何部署您的第一个应用程序

    Docker如何部署您的第一个应用程序

    这篇文章主要介绍了Docker如何部署您的第一个应用程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Docker暴露2375端口导致服务器被攻击问题及解决方法

    Docker暴露2375端口导致服务器被攻击问题及解决方法

    这篇文章主要介绍了Docker暴露2375端口导致服务器被攻击问题及解决方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • docker安装RocketMQ的实现(附填坑经验connect to failed)

    docker安装RocketMQ的实现(附填坑经验connect to failed)

    本文主要介绍了docker安装RocketMQ(附填坑经验connect to failed)
    2024-06-06
  • 一文带你快速了解和使用Docker

    一文带你快速了解和使用Docker

    本文对 Docker 进行全面阐述,详细介绍 Docker 的作用、其基本使用,如常用命令、Dockerfile 的作用及使用、Docker Compose 的作用及使用,感兴趣的同学跟着小编一起来学习吧
    2023-05-05
  • Docker配置Redis集群及主从扩容与缩容的操作方法

    Docker配置Redis集群及主从扩容与缩容的操作方法

    这篇文章主要介绍了Docker配置Redis集群及主从扩容与缩容的操作方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Docker部署php运行环境(php-fpm+nginx)

    Docker部署php运行环境(php-fpm+nginx)

    Docker 是一种流行的容器化平台,可以帮助开发人员快速创建、部署和管理容器化应用程序,本文将介绍如何使用 Docker 搭建 PHP 开发环境服务器,让您能够轻松地开始 PHP 开发工作,感兴趣的可以了解一下
    2023-11-11
  • springboot整合docker部署实现两种构建Docker镜像方式

    springboot整合docker部署实现两种构建Docker镜像方式

    这篇文章主要介绍了springboot整合docker部署实现两种构建Docker镜像方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Docker中如何删除image(镜像)的方法

    Docker中如何删除image(镜像)的方法

    这篇文章主要介绍了Docker中如何删除image(镜像)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论