Docker将间歇性故障推送到kubernetes上的私有docker注册表(docker-desktop)

问题描述 投票:10回答:3

我在docker-desktop(mac)上运行kubernetes集群。

它里面有一个本地docker注册表。

我可以通过API调用查询注册表没有问题,以获取标签列表。

之前我能够推送图像,但需要多次尝试才能推送。

我现在无法推动新的变化。它看起来像是成功推送图层,但后来不承认图层已被推送然后重试。

Repo被称为localhost:5000,我按照https://blog.hasura.io/sharing-a-local-registry-for-minikube-37c7240d0615/上的说明正确地进行端口转发

我没有使用ssl证书,因为这是在本地机器上进行开发。

(证明端口转发工作,否则API调用将失败)

e086a4af6e6b: Retrying in 1 second 
35c20f26d188: Layer already exists 
c3fe59dd9556: Pushing [========================>                          ]  169.3MB/351.5MB
6ed1a81ba5b6: Layer already exists 
a3483ce177ce: Retrying in 16 seconds 
ce6c8756685b: Layer already exists 
30339f20ced0: Retrying in 1 second 
0eb22bfb707d: Pushing [==================================================>]  45.18MB
a2ae92ffcd29: Waiting 
received unexpected HTTP status: 502 Bad Gateway

解决方法(这将足够但不理想,因为必须构建每个容器

apiVersion: v1
kind: Pod
metadata:
  name: producer
  namespace: aetasa
spec:
  containers:
  - name: kafkaproducer
    image: localhost:5000/aetasa/cta-user-create-app
    imagePullPolicy: Never // this line uses the built container in docker
    ports:
        - containerPort: 5005

Kubectl登录注册表

10.1.0.1 - - [20/Feb/2019:19:18:03 +0000] "POST /v2/aetasa/cta-user-create-app/blobs/uploads/ HTTP/1.1" 202 0 "-" "docker/18.09.2 go/go1.10.6 git-commit/6247962 kernel/4.9.125-linuxkit os/linux arch/amd64 UpstreamClient(Docker-Client/18.09.2 \x5C(darwin\x5C))" "-"
2019/02/20 19:18:03 [warn] 12#12: *293 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000011, client: 10.1.0.1, server: localhost, request: "PATCH /v2/aetasa/cta-user-create-app/blobs/uploads/16ad0e41-9af3-48c8-bdbe-e19e2b478278?_state=qjngrtaLCTal-7-hLwL9mvkmhOTHu4xvOv12gxYfgPx7Ik5hbWUiOiJhZXRhc2EvY3RhLXVzZXItY3JlYXRlLWFwcCIsIlVVSUQiOiIxNmFkMGU0MS05YWYzLTQ4YzgtYmRiZS1lMTllMmI0NzgyNzgiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDItMjBUMTk6MTg6MDMuMTU2ODYxNloifQ%3D%3D HTTP/1.1", host: "localhost:5000"
2019/02/20 19:18:03 [error] 12#12: *293 connect() failed (111: Connection refused) while connecting to upstream, client: 10.1.0.1, server: localhost, request: "PATCH /v2/aetasa/cta-user-create-app/blobs/uploads/16ad0e41-9af3-48c8-bdbe-e19e2b478278?_state=qjngrtaLCTal-7-hLwL9mvkmhOTHu4xvOv12gxYfgPx7Ik5hbWUiOiJhZXRhc2EvY3RhLXVzZXItY3JlYXRlLWFwcCIsIlVVSUQiOiIxNmFkMGU0MS05YWYzLTQ4YzgtYmRiZS1lMTllMmI0NzgyNzgiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDItMjBUMTk6MTg6MDMuMTU2ODYxNloifQ%3D%3D HTTP/1.1", upstream: "http://10.104.68.90:5000/v2/aetasa/cta-user-create-app/blobs/uploads/16ad0e41-9af3-48c8-bdbe-e19e2b478278?_state=qjngrtaLCTal-7-hLwL9mvkmhOTHu4xvOv12gxYfgPx7Ik5hbWUiOiJhZXRhc2EvY3RhLXVzZXItY3JlYXRlLWFwcCIsIlVVSUQiOiIxNmFkMGU0MS05YWYzLTQ4YzgtYmRiZS1lMTllMmI0NzgyNzgiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMTktMDItMjBUMTk6MTg6MDMuMTU2ODYxNloifQ%3D%3D", host: "localhost:5000"
docker kubernetes registry private docker-desktop
3个回答
1
投票

尝试为docker客户端配置--max-concurrent-uploads=1。你正在推动相当大的层(350MB),所以你可能在某个地方遇到了一些限制(请求大小,超时)。单个并发上传可能会对您有所帮助,但这只是一种解决方法。真正的解决方案是最终在注册表前面的注册表+反向代理的配置(缓冲区大小,超时,......)。


0
投票

它可能是磁盘空间问题。如果将Docker镜像存储在Docker VM中,则可以非常快速地填满磁盘空间。

默认情况下,docker-desktop VM磁盘空间限制为64 GB。您可以在Docker首选项的“磁盘”选项卡上将其增加到112Gb。


0
投票

我很少遇到过这个问题,遗憾的是无法解决这个问题。

很可能图像应该已在注册表中被破坏。作为一种解决方法,我建议你从注册表中删除图像并重新推动。它会起作用,随后的推动也会起作用。

此问题必须与图像的缺失图层相关。有时我们使用--force选项删除图像,在这种情况下,某些公共图层可能会被删除,并会影响共享已删除图层的其他图像。

© www.soinside.com 2019 - 2024. All rights reserved.