Private Docker Registry push returns 500 after uploading

I am using Docker Registry (for Windows). This is my docker-compose.yaml:

version: "3"
services:
  registry:
    image: stefanscherer/registry-windows:2.7.1
    deploy:
      replicas: 1
      restart_policy:
        condition: always
    ports:
      - 19101:5000
    environment:
      - REGISTRY_HTTP_TLS_CERTIFICATE=C:\certs\crt.crt
      - REGISTRY_HTTP_TLS_KEY=C:\certs\key.key
    volumes:
      - .\registry:C:\registry
      - .\certs:C:\certs

I have setup everything else well, and can access them. Now when I try to push, I always receive error after successfully uploading all the layers:

This is what I have tried and the log file:

  • Delete everything in \registry folder so I have a fresh one.
  • Run the upper push command.
  • Here is the log result: http://pasted.co/ab9a0655. Basically, PUT /v2/luke/hello-world/manifests/1.0 always returns 500.

I also tried accessing /v2/luke/hello-world/manifests/1.0, the result is:

{"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":{"Tag":"1.0"}}]}

Please tell me what went wrong?