Docker安装MinIO遇到的(汇总——持续更新中)

news2024/12/30 2:54:43

文章目录

  • 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.coloradmin.cn/o/1217667.html

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

相关文章

锐捷练习-ospf虚链路及rip路由相互引入

一、相关知识补充 1、ospf基本概述 OSPF&#xff08;Open Shortest Path First&#xff09;是一种链路状态路由协议&#xff0c;用于在计算机网络中进行路由选择。它是内部网关协议&#xff08;IGP&#xff09;之一&#xff0c;常用于大规模企业网络或互联网服务提供商的网络…

修改服务器端Apache默认根目录

目标&#xff1a;修改默认Apache网站根目录 /var/www/html 一、找到 DocumentRoot “/var/www/html” 这一段 apache的根目录&#xff0c;把/var/www/html 这个目录改 #DocumentRoot "/var/www/html" DocumentRoot "/home/cloud/tuya_mini_h5/build" 二、…

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件&#xff0c;用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具&#xff0c;可以将音频、视频和图像合成在一起&#xff0c;创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式&#xff0c;包括视频文…

C语言的动态内存管理

目录 一、malloc函数 二、free函数 三、calloc函数 四、realloc函数 五、realloc函数原地扩容和异地扩容测试 六、动态内存管理的注意事项 一、malloc函数 1.头文件&#xff1a;stdlib.h&#xff08;malloc.h&#xff09; 2.函数原型&#xff1a;void * malloc(size_t siz…

春秋云境靶场CVE-2021-41402漏洞复现(任意代码执行漏洞)

文章目录 前言一、CVE-2021-41402描述二、CVE-2021-41402漏洞复现1、信息收集1、方法一弱口令bp爆破2、方法二7kb扫路径&#xff0c;后弱口令爆破 2、找可能可以进行任意php代码执行的地方3、漏洞利用找flag 总结 前言 此文章只用于学习和反思巩固渗透测试知识&#xff0c;禁止…

【ROS导航Navigation】五 | 导航相关的消息 | 地图 | 里程计 | 坐标变换 | 定位 | 目标点和路径规划 | 激光雷达 | 相机

致谢&#xff1a;ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 一、地图 nav_msgs/MapMetaData 地图元数据&#xff0c;包括地图的宽度、高度、分辨率等。 nav_msgs/OccupancyGrid 地图栅格数据&#…

shell脚本学习06(小滴课堂)

fi是结束循环的意思。 这里脚本1&#xff1a;代表着脚本和1.txt文件处于同一目录下。 脚本2为绝对路径的写法。 在使用./进行启动时&#xff0c;我们需要给文件赋予执行权限。 把文件名改为2.txt: 什么都没有返回&#xff0c;说明文件已经不存在。 可以使用脚本2 if else的方式…

48v变12v同步转换芯片

48v变12v同步转换芯片 以下是一篇关于48V变12V同步转换器WD5105ic的文章正文&#xff1a;48V变12V同步转换器WD5105ic是一种电源管理芯片&#xff0c;它可以将48V的直流电压转换为12V的直流电压。这款芯片具有广泛的应用范围&#xff0c;包括车载充电器件、电动车仪表器件、电…

【LabVIEW学习】2.for,while,事件

1.for实例&#xff08;随机输出数据100次&#xff09; 结果&#xff1a; 2.while实例&#xff08;i<50灯亮&#xff0c;大于之后灯灭&#xff09; 结果&#xff1a;&#xff08;先亮后灭&#xff09; 3.事件结构的实例&#xff08;点击按钮数据增加&#xff09;事件监听应该…

6.运行mysql容器-理解容器数据卷

运行mysql容器-理解容器数据卷 1.什么是容器数据卷2.如何使用容器数据卷2.1 数据卷挂载命令2.2 容器数据卷的继承2.3 数据卷的读写权限2.4 容器数据卷的小实验&#xff08;加深理解&#xff09;2.4.1 启动挂载数据卷的centos容器2.4.2 启动后&#xff0c;在宿主机的data目录下会…

reids管道

如何优化频繁命令往返造成的性能瓶颈&#xff1f; 如果同时需要执行大量的命令&#xff0c;那么就要等待上一条命令应答后再执行&#xff0c;这中间不仅仅多了RTT&#xff08;Round Time Trip&#xff09;&#xff0c;而且还频繁调用系统IO&#xff0c;发送网络请求&#xff0c…

SSM项目初始化流程与操作概念解释-SpringBoot简化版

文章目录 1.引入概念2.导入依赖3.项目配置4.依照SpringMVC框架构建项目 1.引入概念 例如某一个XX系统&#xff0c;该系统存在前台页面&#xff08;给用户直观看或使用&#xff09;&#xff0c;和后台页面&#xff08;给管理人员调整数据和权限&#xff09;。 这二个页面都通过…

QT自定义信号,信号emit,信号参数注册

qt如何自定义信号 使用signals声明返回值是void在需要发送信号的地方使用 emit 信号名字(参数)进行发送 在需要链接的地方使用connect进行链接 ct进行链接

pytorch.nn.Conv1d详解

通读了从论文中找的代码&#xff0c;终于找到这个痛点了&#xff01; 以下详解nn.Conv1d方法 1 参数说明 in_channels(int) – 输入信号的通道。 out_channels(int) – 卷积产生的通道。 kernel_size(int or tuple) - 卷积核的尺寸&#xff0c;经测试后卷积核的大小应为in_cha…

阅读记录【PMLR2023】The Aggregation–Heterogeneity Trade-off in Federated Learning

The Aggregation–Heterogeneity Trade-off in Federated Learning Abstract 机器学习的传统观点认为&#xff0c;训练模型的数据越多&#xff0c;模型的性能就越好。因此&#xff0c;人们开发了多种联邦学习方法来聚合尽可能多的本地样本。与这种观点相反&#xff0c;本文表…

字母不重复的子串-第15届蓝桥第二次STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第158讲。 第15届蓝桥第2次STEMA测评已于2023年10月29日落下帷幕&#xff0c;编程题一共有6题&#xff0c;分别如下&am…

2023年【化工自动化控制仪表】找解析及化工自动化控制仪表试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 化工自动化控制仪表找解析参考答案及化工自动化控制仪表考试试题解析是安全生产模拟考试一点通题库老师及化工自动化控制仪表操作证已考过的学员汇总&#xff0c;相对有效帮助化工自动化控制仪表试题及解析学员顺利通…

openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性

文章目录 openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性125.1 前提条件125.2 背景信息125.3 操作步骤 openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性 125.1 前提条件 数据库正常运行&#xff0c;并且对防…

【网络基础实战之路】基于不同协议间使用重发布路由策略

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

威胜WFET2000s电能量数据采集终端-WF102协议报文解读

客户又追加需求了 要求把电表接入他们自己的管理系统 小头菜查找相关资料&#xff0c;发现威胜2000s采集终端功能挺多&#xff0c;但是售价比普通透传DTU贵了 N 倍。 迫于成本压力&#xff0c;小头菜和厂里负责管理系统的领导沟通&#xff0c;看能不能用普通DTU代替。 后来发现…