docker - 如何取消 Nginx 上传限制?
问题描述
我们有一个私有的 docker 注册表和一个用于身份验证和反向代理的 Nginx infront。最近每次我尝试上传大图层(大约 2 Gi)的图像时,我都会遇到不同的错误,例如:
The push refers to repository [mydockerurl]
ce7ac3355b6d: Layer already exists
0f0c22119274: Pushing [==================================================>] 3.232GB/3.232GB
e0b3afb09dc3: Layer already exists
6c01b5a53aac: Layer already exists
2c6ac8e5063e: Layer already exists
cc967c529ced: Layer already exists
received unexpected HTTP status: 500 Internal Server Error
#OR
The push refers to repository [mydockerurl]
ce7ac3355b6d: Layer already exists
0f0c22119274: Pushing [==================================================>] 3.232GB/3.232GB
e0b3afb09dc3: Layer already exists
6c01b5a53aac: Layer already exists
2c6ac8e5063e: Layer already exists
cc967c529ced: Layer already exists
net/http: HTTP/1.x transport connection broken: write tcp [my-machine-ip]:51424->[docker-ip]:443: write: broken pipe
我什至试图将图像分成更小的层,但我仍然面临这个问题。
我检查了 Nginx 的配置,但所有大小参数都设置为零,这意味着没有限制:
~/nginx$ grep -rn . -e size
./auth/nginx.conf:34: client_max_body_size 0;
./auth/nginx.conf:45: client_max_body_size 0;
./auth/nginx.conf:64: client_max_body_size 0;
./auth/nginx.conf:92: client_max_body_size 0;
./auth/nginx.conf:110: client_max_body_size 0;
./auth/nginx.conf:126: client_max_body_size 0;
./auth/nginx.conf:139: client_max_body_size 0;
./auth/nginx.conf:154: client_max_body_size 0;
./auth/nginx.conf:174: client_max_body_size 0;
我仍然认为这个限制是由 Nginx 应用的,我该如何消除这个限制?或者我如何确定这不是 Nginx 施加的限制?
更新
添加并设置client_body_timeout
为 600s 后,我仍然得到同样的错误。
更新 2
我发现问题是我们的服务器上没有足够的可用磁盘空间,这就是为什么我能够推送小层但不能推送大层的原因。
解决方案
推荐阅读
- julia - 将 `missing` 参数传递给 Turing.jl 中的伯努利模型
- postgresql - How to import a Postgres 9.4 extension in windows?
- gitlab - 从 appveyor 构建推送到远程 gitlab Git 存储库
- parse-platform - Parse Server 主密钥可以为每个实例随机化吗?
- azure - Azure SSIS 包 - 执行 SQL 任务
- geany - 不安装新插件可以缩小状态栏吗?
- entity-framework - EF Core - 同一对实体上的一对多和多对一关系
- word2vec - 将字典转换为 KeyedVectorFormat
- kerberos - 如何在窗口中发布(或创建)kerberos 票证?
- c++ - 在 glsl 中初始化全局变量?