Docker向harbor上传大镜像的413报错

2024-04-19 17:28

本文主要是介绍Docker向harbor上传大镜像的413报错,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、背景
    • 二、问题
    • 三、处理
      • 1.调整harbor相关大小
      • 2.正向代理的nginx参数

一、背景

最近遇到了个需求,某厂商的系统模块以容器模式部署在我们的内网环境中,厂商为我们提供了一个公网仓库,需要我们自己下载相关镜像。因此,获取镜像只能通过两种方式:
1.在我们的个人设备上pull镜像,然后save镜像,拷贝到相应的机器中,最后load镜像;2.直接让生产机器出互联网,通过docker pull的方式直接获取。但对于我们来说,内网生产设备从安全策略层面无法直接对接互联网。因此,我们选择通过正向代理,让harbor仓库可以对接互联网到公网仓库中下载镜像,并统一通过harbor进行管理,这样不仅能解决镜像获取问题,同时也可以统一镜像入口,控制镜像准入,简化镜像安全策略。
具体架构如下:
在这里插入图片描述

二、问题

目前,已经顺利将所需的镜像获取下来,为了方便提供后端的server使用,需要通过docker push操作将镜像推送到仓库中:

docker tag SourceImage:TAG IP_HARBOR/REGISTRY_NAME/Image:TAG
docker push IP_HARBOR/REGISTRY_NAME/Image:TAG

在进行push的过程中,发现在推送动作执行一段时间后,报错413错误:
在这里插入图片描述

从报错信息上可以看出两点:
1.报错是nginx发起的;
2.报错意思是包体过大(厂商提供的镜像,一个有17G,虽然这看起来很不合理);
其实解决这个错误还是挺简单的,我们只需要在nginx的http域或者server域或者location域配置中加入以下配置即可:

client_max_body_size 0;

该配置表示nginx不限制包体的大小

三、处理

1.调整harbor相关大小

查看harbor有哪些组件
在这里插入图片描述

可以看到,对于harbor来说,我们不难看出除了后台的服务、数据库、缓存外,我们的入口主要就是一个nginx容器。

可以看到,对于harbor来说,我们不难看出除了后台的服务、数据库、缓存外,我们的入口主要就是一个nginx容器。

  1. 根据上面的分析,我们需要修改该nginx的参数
vi /apps/harbor/common/config/nginx/nginx.conf在server域增加配置:client_max_body_size 0;
client_body_timeout 3600s;
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
  1. 从组件构成来看,harbor-portal也是一个nginx组成的,那么我们也可以将该nginx的参数进行修改:
vi /apps/harbor/common/config/portal/nginx.conf在server域增加配置:client_max_body_size 0;
client_body_timeout 3600s;
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;

2.正向代理的nginx参数

这一点是之前一直忽略的点,也是很难想到的点,我们将harbor自身组件的限制取消后,发现push镜像还是一直有413的问题,这个问题排查了很久,后来也是突然想到的。由于我们的harbor是在容器层面配置了正向代理,在进行push的时候,我们从正向代理的日志中发现即使本机配置,上传过程中也会过正向代理。因此,我们将正向代理的参数也进行修改:

在http域中添加参数:client_max_body_size 0;

修改完成,重新reload相关nginx后,重新push,结果通过

这篇关于Docker向harbor上传大镜像的413报错的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918164

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原