我们有一个专用的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后,仍然出现相同的错误。
我发现问题出在我们的服务器上没有足够的可用磁盘空间,这就是为什么我能够推送较小的层但不能推送较大的层的原因。