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

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas