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

一、背景

最近遇到了个需求,某厂商的系统模块以容器模式部署在我们的内网环境中,厂商为我们提供了一个公网仓库,需要我们自己下载相关镜像。因此,获取镜像只能通过两种方式:
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,结果通过

相关推荐

  1. 文件总结

    2024-04-20 18:08:06       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 18:08:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 18:08:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 18:08:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 18:08:06       20 阅读

热门阅读

  1. 基于simulink的配网自动化仿真

    2024-04-20 18:08:06       15 阅读
  2. html用法

    2024-04-20 18:08:06       13 阅读
  3. Nginx 负载均衡配置

    2024-04-20 18:08:06       17 阅读
  4. 09篇 docker命令详解

    2024-04-20 18:08:06       13 阅读
  5. 在单片机中什么是FLASH

    2024-04-20 18:08:06       18 阅读
  6. MCU的启动流程

    2024-04-20 18:08:06       13 阅读
  7. 设计模式(021)行为型之访问者模式

    2024-04-20 18:08:06       15 阅读
  8. chrome中使用AppEmit调用ocx使用文档,vue调用ocx

    2024-04-20 18:08:06       13 阅读
  9. 安装kafka需优先安装 zookeeper ,scala

    2024-04-20 18:08:06       13 阅读