Docker安装MinIO遇到的问题汇总——持续更新中

文章目录

  • Docker安装MinIO遇到的坑
    • 前言
    • 问题1:执行`docker run`报错Error response from daemon
    • 问题2:启动MinIO容器浏览器无法访问
    • 问题3:上传文件报错`InvalidResponseException`
    • 问题4:上传文件报错`Connection refused`
    • 最终的启动指令
    • 问题5:上传文件报错`Unsupported OkHttp library found. Must use okhttp >= 4.8.1`

Docker安装MinIO遇到的坑

前言

本文章记录作者使用Docker安装MinIO过程中遇到的所有问题,将持续更新,如果你在使用Docker安装MinIO过程中遇到了一些问题,但是本文没有记载,你可以直接在本文评论区贴图、或打字描述,这样大家都能看到,可以给你一些建议,从而不断完善,让后来者少走更多的弯路,作者这一路也受到很多这样的博主的无形之中的帮助,所以作者也想成为这样能够无形之中帮助他人的人,这也算是一种善吧,“勿以善小而不为,勿以恶小而为之”,这也是我一直坚持记录Bug的出发点之一,一起加油吧,初学者

PS:由于笔者也是一个初学者,所以文中可能对于一些问题原因的解释不到位,如果您知道,还请及时告知在下,同时如果对于一些问题,你有更好的解决方案,也请你能够分享给笔者,万分感谢

问题1:执行docker run报错Error response from daemon

  • 问题:执行docker run报错Error response from daemon

    docker: Error response from daemon: driver failed programming external connectivity on endpoint minio (b78ded203d04164bc5d4a2e9dae2a4cdda9f4377950d38e9d0b46d033ca4608c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.3:9000 ! -i docker0: iptables: No chain/target/match by that name.
    (exit status 1)).
    

    image-20231019155714037

  • 问题原因:没有开启防火墙。

    我执行docker run进行端口映射时,需要使用防火墙,但是由于我是关闭了防火墙的原因,所以导致无法进行映射,从而出现报错

  • 问题解决:开启防火墙,重新启动MinIO容器

    # 查看防火墙状态
    systemctl status firewalld.service 
    # 开启防火墙
    systemctl start firewalld.service 
    # 关闭防火墙
    systemctl stop firewalld.service 
    

问题2:启动MinIO容器浏览器无法访问

  • 问题:启动MinIO容器浏览器无法访问

    image-20231019160116377

  • 问题原因:存在两个问题

    • 问题1:使用了过期的配置

      自从RELEASE.2021-02-10T23-14-37Z 版本开始引入了引入了鉴权功能,并且在首次启动时需要设置根用户和密码,MinIO就不在使用 MINIO_ACCESS_KEYMINIO_SECRET_KEY 进行访问鉴权,而是直接使用MINIO_ROOT_USERMINIO_ROOT_PASSWORD

    • 问题2:没有为MinIO配置静态端口

      这个问题涉及到了Docker和MinIO的运行机制,当你使用Docker启动MinIO服务时,默认情况下,它会在一个动态的端口上监听,这个端口是由Docker守护程序选择的。这种动态监听的机制可以使得Docker容器能够更好地与其他容器进行通信,因为它们都在同一个Docker网络上。

      image-20231019160340588

  • 问题解决

    • 对于问题1:要么降低MinIO的版本,要么就将 MINIO_ACCESS_KEYMINIO_SECRET_KEY 配置项改为MINIO_ROOT_USERMINIO_ROOT_PASSWORD

    • 对于问题2:使用下面配置项使得端口静态化

      --console-address ":9000" --address ":9001"
      

问题3:上传文件报错InvalidResponseException

  • 问题:上传文件报错S3 API Request made to Console port. S3 Requests should be sent to API port.

    image-20231021202651845

    io.minio.errors.InvalidResponseException: Non-XML response from server. Response code: 403, Content-Type: text/xml; charset=utf-8, body: <?xml version="1.0" encoding="UTF-8"?>
    <Error><Code>AccessDenied</Code><Message>S3 API Request made to Console port. S3 Requests should be sent to API port.</Message><RequestId>0</RequestId>
    </Error>
    
  • 问题原有:用错了MinIO的端口号

    前面我们通过--console-address ":9000" --address ":9001"配置了MinIO的网页控制台端口号是9000,而MinIO服务的端口是9090,我在项目中使用了控制台端口号

  • 问题解决:将端口号改为MinIO的服务端口号9001

问题4:上传文件报错Connection refused

  • 问题:上传文件报错Connection refused

    image-20231021204633332

  • 问题原因:没有配置MinIO端口映射。

    之前我只配置了MinIO控制台的端口映射,但是没有为MinIO服务配置端口映射,导致Docker容器中的端口没有对虚拟机开放,从而导致连接不上,这一点坑了我好久┭┮﹏┭┮(如果这一点大家也踩坑了,就给我点个赞吧,安慰一下我)

  • 问题解决:配置MinIO服务端口映射

    -p 9001:9001
    

最终的启动指令

docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-d \
--restart=always \
-e "MINIO_ROOT_USER=root" \
-e "MINIO_ROOT_PASSWORD=32345678" \
-v /usr/local/soft/minio/data:/data \
-v /usr/local/soft/minio/config:/root/.minio \
minio/minio \
server \
/data \
--console-address ":9000" \
--address ":9001"
  • docker run:命令用于创建和运行Docker容器。

  • -p:选项指定了端口映射

    • -p 9000:9000:将主机的9000端口映射到容器内部的9000端口,以便通过主机的9000端口访问MinIO控制台。
    • -p 9001:9001:将主机的9001端口映射到容器内部的9001端口,以便通过注解的9001端口访问MinIO服务
  • --name minio:选项为容器指定了一个名称,即"minio",这样可以方便地引用该容器。

  • -d:选项将容器设置为“后台模式”,使得容器在后台运行。

  • --restart=always:选项指定了容器的重启策略,即容器在退出时总是自动重新启动。

  • -e "MINIO_ROOT_USER=root":选项通过环境变量设置MinIO的访问密钥(Access Key)为"root"。

  • -e "MINIO_ROOT_PASSWORD=32345678":选项通过环境变量设置MinIO的密钥(Secret Key)为"32345678"。

  • -v /usr/local/soft/minio/data:/data:选项指定了数据卷的挂载,将主机的"/home/data"目录挂载到容器的"/data"目录,用于持久化存储MinIO的数据。

  • -v /usr/local/soft/minio/config:/root/.minio:选项指定了配置卷的挂载,将主机的"/home/config"目录挂载到容器的"/root/.minio"目录,用于持久化存储MinIO的配置文件。

  • minio/minio:指定使用的镜像名称为minio/minio,即MinIO官方提供的Docker镜像。

  • server /data:参数指定了MinIO服务器的配置。"/data"是MinIO服务器将用于存储数据的目录路径。

  • --console-address ":9000":指定MinIO控制台端口,确保任何尝试连接到这个端口的客户端或应用程序都可以使用这个端口

  • --address ":9001":指定MinIO服务端口,将Docker守护程序绑定到指定的端口上

成功启动并访问

image-20231019161516688

总结前四个问题,本质都是启动指令的问题

问题5:上传文件报错Unsupported OkHttp library found. Must use okhttp >= 4.8.1

注意:这几个问题不是同一个项目中遇到的,前面4个问题是在SpringBoot整合MinIO遇到的,后面的问题是平常开发中遇到的

  • 问题:上传文件报错Unsupported OkHttp library found. Must use okhttp >= 4.8.1

    image-20231022113117214

  • 问题原因:SpringBoot版本问题(本质是OkHttp和MinIO版本不兼容)

    MinIO依赖中有使用到OkHttp依赖,因为客户端与服务端发送文件都是需要发送Http请求的,这个OkHttp依赖的版本会受到SpringBoot版本的影响,SpringBoot2.3版本使用的是OkHttp3,SpringBoot2.7版本使用的是OkHttp4,而我当前项目中使用的MinIO是8.5.2,这个版本最低要求是是4.x,而我使用的SpringBoot2.3,自动就引入了OkHttp3.x,导致不兼容

    image-20231022113230138

    一下是常见的MinIO版本与OkHttp版本的对照情况:

    MinIO 版本最低 OkHttp 版本要求兼容 OkHttp 版本
    8.x.x4.8.14.x.x, 5.x.x
    7.x.x3.14.03.x.x
    6.x.x3.12.03.x.x
  • 解决方法

    • 方案一:提高SpringBoot版本,将SpringBoot版本提高至2.4,2.4版本的SpringBoot版本默认改用了OkHttp4,刚好和 MinIO8.x兼容(不推荐,因为项目更换SpringBoot版本成本比较高)

    • 方案二:降低MinIO版本,将MinIO的版本降低至7.x,这个版本的MinIO兼容OkHttp3.x(不太推荐)

    • 方案三:直接手动引入OkHttp4.x,覆盖掉SpringBoot中的OkHttp3.x

              <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.2</version><exclusions><exclusion><artifactId>okhttp</artifactId><groupId>com.squareup.okhttp3</groupId></exclusion></exclusions></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.3</version></dependency>
      

      PS:还有一个注意点,如果我这个minio是一个starter,那么在starter中排除OkHttp版本再引入是无效的,需要到引用starter的项目中去排除OkHttp版本,然后再引用对应的OkHttp版本

参考文章

  • docker搭建最新minio访问不了页面解决及注意事项-CSDN博客
  • Java MINIO使用踩坑&解决_-CSDN博客
  • Minio Unsupported OkHttp library found. Must use okhttp >= 4.8.1_嘟嘟Listing的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/195096.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(1):开始

计算机组成概述 计算机&#xff1a;接受用户输入指令与数据&#xff0c;经由中央处理器的数学与逻辑单元处理后&#xff0c;以产生或存储有用的信息。 主要可以分为3个部分&#xff1a;输入单元、主机单元、输出单元。 中央处理器&#xff08;Central Processing Unit, CPU&a…

MyCat基础入门

1. MyCat安装 去官网下载安装包&#xff1a; 下载路径&#xff1a; 官方网站&#xff1a;http://www.mycat.org.cn/ github地址https://github.com/MyCATApache 上传到服务器上并解压&#xff1a; 它解压后是一个叫mycat的文件夹 去maycat的bin目录下&#xff0c;执行命令 ./my…

vscode删除后重装还有原来的配置问题,彻底删除vscode,删除vscode安装过的插件和缓存

VSCode卸载后进行重新安装&#xff0c;发现新安装的还有原来的一些配置&#xff0c;卸载的不彻底&#xff0c;有时候也容易出问题&#xff0c;可按照如下方法卸载干净&#xff1a; 1.进入控制面板卸载VSCode&#xff0c;也可以在VSCode的安装目录下用程序自带的卸载程序 2.这…

摄影店信息展示服务预约小程序的效果如何

无论视频还是图片在生活中的用途都非常广&#xff0c;市场中的摄影店也非常多&#xff0c;比如婚纱照、产品照、食物照、服装照等&#xff0c;除了婚纱照是刚需外&#xff0c;如今随着线上宣传渠道成为主流&#xff0c;无论企业还是自媒体个人都有一定的摄影需求&#xff0c;因…

微信小程序 限制字数文本域框组件封装

微信小程序 限制字数文本域框 介绍&#xff1a;展示类组件 导入 在app.json或index.json中引入组件 "usingComponents": {"text-field":"/pages/components/text-field/index"}代码使用 <text-field maxlength"500" bindtabsIt…

概率论和数理统计(三)数理统计基本概念

前言 “概率论”是给定一个随机变量X的分布F(x),然后求某事件A概率 P ( x ∈ A ) P(x \in A) P(x∈A)或者随机变量X的数字特征.“统计”是已知一组样本数据 { x 1 , x 2 , . . . x n } \{x_1,x_2,...x_n\} {x1​,x2​,...xn​},去求分布F(x) 统计的基本概念 在统计中&#x…

【无标题】chapter6卷积

此例以说明全连接层处理图片的时候会遇到参数过多 模型过大的问题 参数比要研究的物体总数还多 卷积&#xff0c;特殊的全联接层 平移不变形&#xff0c;局部性 原本权重为二维&#xff08;输入和输出全联接&#xff0c;想想下表组合&#xff0c;就是个二维的矩阵&#xff09;…

ResNet 原论文及原作者讲解

ResNet 论文摘要1. 引入2. 相关工作残差表示快捷连接 3. 深度残差学习3.1. 残差学习3.2. 快捷恒等映射3.3. 网络体系结构普通网络 plain network残差网络 residual network 3.4. 实施 4. 实验4.1. ImageNet分类普通的网络 plain network残差网络 residual network恒等vs.快捷连…

修改 jar 包中的源码方式

在我们开发的过程中&#xff0c;我们有时候想要修改jar中的代码&#xff0c;方便我们调试或或者作为生产代码打包上线&#xff0c;但是在IDEA中&#xff0c;jar包中的文件都是read-only&#xff08;只读模式&#xff09;。那如何我们才能去修改jar包中的源码呢&#xff1f; 1.…

Python winreg将cmd/PowerShell(管理员)添加到右键菜单

效果 1. 脚本 用管理员权限运行&#xff0c;重复执行会起到覆盖效果&#xff08;根据sub_key&#xff09;。 icon自己设置。text可以自定义。sub_key可以改但不推荐&#xff08;避免改成和系统已有项冲突的&#xff09;。command不要改。 from winreg import *registry r&q…

第28章_mysql缓存策略

文章目录 MySQL缓存方案目的分析缓存层作用举例 缓存方案选择场景分析 提升MySQL访问性能的方式MySQL主从复制读写分离连接池异步连接 缓存方案缓存和MySQL一致性状态分析制定读写策略 同步方案canalgo-mysql-transfer 缓存方案的故障问题及解决缓存穿透缓存击穿缓存雪崩缓存方…

「分享学习」SpringCloudAlibaba高并发仿斗鱼直播平台实战完结

[分享学习]SpringCloudAlibaba高并发仿斗鱼直播平台实战完结 第一段&#xff1a;简介 Spring Cloud Alibaba是基于Spring Cloud和阿里巴巴开源技术的微效劳框架&#xff0c;普遍应用于大范围高并发的互联网应用系统。本文将引见如何运用Spring Cloud Alibaba构建一个高并发的仿…

基于JavaWeb+SSM+社区居家养老服务平台—颐养者端微信小程序系统的设计和实现

基于JavaWebSSM社区居家养老服务平台—颐养者端微信小程序系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 在复杂社会化网络中&#xff0c;灵活运用社会生活产生的大数据&am…

理解 R-CNN:目标检测的一场革命

一、介绍 对象检测是一项基本的计算机视觉任务&#xff0c;涉及定位和识别图像或视频中的对象。多年来&#xff0c;人们开发了多种方法来应对这一挑战&#xff0c;但基于区域的卷积神经网络&#xff08;R-CNN&#xff09;的发展标志着目标检测领域的重大突破。R-CNN 及其后续变…

php-cli

//运行index.php ./php index.php//启动php内置服务器 ./php -S 0.0.0.0:8080//启动内置服务在后台运行&#xff0c;日志输出到本目录下的server.log nohup ./php -S 0.0.0.0:8080 -t . > server.log 2>&1 &# 查找 PHP 进程 ps aux | grep "php -S 0.0.0.0:…

用Postman发送xml数据

启动Postman&#xff1a; 点击左上角的“New”&#xff0c;在弹出窗中选择HTTP&#xff1a; 选择POST方法&#xff1a; 点击Body&#xff1a; 选择raw&#xff1a; 在右侧的下拉列表中选择XML&#xff1a; 在下面的输入框中输入或者从其它地方拷贝XML文本&#xff1a;…

玩具、儿童用品、儿童服装上亚马逊TEMU平台CPC认证办理

CPC认证是Childrens Product Certificate的简称&#xff0c;即儿童产品证书。它是美国强制性法规CPSIA要求的一部分&#xff0c;该法规主要针对12岁及以下儿童使用的产品&#xff0c;如玩具、儿童用品、儿童服装等。 一、儿童小汽车CPC测试项目可能会因产品标准和法规的不同而…

12-2- DCGAN -简单网络-卷积网络

功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…

CocosCreator3.8神秘面纱 CocosCreator 项目结构说明及编辑器的简单使用

我们通过Dashboard 创建一个2d项目&#xff0c;来演示CocosCreator 的项目结构。 等待创建完成后&#xff0c;会得到以下项目工程&#xff1a; 一、assets文件夹 assets文件夹&#xff1a;为资源目录&#xff0c;用来存储所有的本地资源&#xff0c;如各种图片&#xff0c;脚本…

BIO、NIO、AIO三者的区别及其应用场景(结合生活例子,简单易懂)

再解释三者之前我们需要先了解几个概念&#xff1a; 阻塞、非阻塞&#xff1a;是相较于线程来说的&#xff0c;如果是阻塞则线程无法往下执行&#xff0c;不阻塞&#xff0c;则线程可以继续往下 执行。同步、异步&#xff1a;是相较于IO来说的&#xff0c;同步需要等待IO操作完…