使用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中Kafka容器创建/更新Topic支持多分区实现方式

    Docker中Kafka容器创建/更新Topic支持多分区实现方式

    本文详细介绍了如何在Docker中部署和配置Kafka,并通过脚本检测和更新Topic的分区数,如果Topic已经存在,则将其分区数更新为5个;如果不存在,则新建一个名为http_capture的Topic
    2025-12-12
  • Docker实现自定义jkd镜像上传阿里云

    Docker实现自定义jkd镜像上传阿里云

    本文详解基于Ubuntu构建JDK8自定义Docker镜像及上传至阿里云仓库的流程,涵盖Dockerfile编写、镜像构建、容器运行、环境变量配置,以及阿里云账户准备、镜像推送与测试等关键步骤
    2025-08-08
  • docker搭建kafka集群的方法实现

    docker搭建kafka集群的方法实现

    本文主要介绍了docker搭建kafka集群的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 详解Docker修改容器端口映射的方法

    详解Docker修改容器端口映射的方法

    这篇文章主要介绍了详解Docker修改容器端口映射的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2006-11-11
  • docker /var/lib/docker/aufs/mnt 目录清理方法

    docker /var/lib/docker/aufs/mnt 目录清理方法

    在本篇文章里小编给各位整理的是关于docker /var/lib/docker/aufs/mnt 目录清理方法,有需要的朋友们可以参考下。
    2020-03-03
  • 教你使用docker查看运行中的容器

    教你使用docker查看运行中的容器

    这篇文章主要介绍了使用docker查看运行中的容器,本文内容简单给大家讲解的很明白,对docker查看运行的容器相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • docker-compose如何定义一个桥接网络,并为该网络配置一个IP地址池

    docker-compose如何定义一个桥接网络,并为该网络配置一个IP地址池

    在DockerCompose中定义桥接网络并配置IP地址池,可以实现服务的自动IP地址分配,通过定义网络、指定子网范围、设置网关和启用自动分配功能,可以轻松管理服务的网络配置,确保IP地址在子网范围内且不与其他网络冲突,以避免网络冲突
    2025-01-01
  • Docker安装MongoDB的过程(mongo.latest)

    Docker安装MongoDB的过程(mongo.latest)

    MongoDB是一种高性能、灵活的数据库,特别适合处理大量非结构化数据,它采用文档数据模型,支持复杂的数据结构,提供类似面向对象的查询语言,本文给大家介绍Docker安装MongoDB的过程(mongo.latest),感兴趣的朋友一起看看吧
    2024-11-11
  • 宿主机无法访问docker容器中nginx服务的问题解决

    宿主机无法访问docker容器中nginx服务的问题解决

    在虚拟机中部署Docker并安装Nginx后,宿主机无法访问容器内的Nginx服务,通过检查端口映射、防火墙状态、进入容器内部启动Nginx以及检查/修改内核的IP转发设置,解决了该问题,感兴趣的可以了解一下
    2024-11-11
  • 如何基于docker 部署Skywalking

    如何基于docker 部署Skywalking

    文章详解使用Docker部署SkyWalking,涵盖Elasticsearch单节点配置、OAPServer与UI服务的镜像选择、端口映射及依赖关系,以及客户端Agent集成方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-09-09

最新评论