gitlab registry push unknown blob 에러

gitlab의 registry에 빌드한 docker image를 push하려는데 아래와 같은 오류가 발생했다.

$ docker push registry.example.com/test/image
Using default tag: latest
The push refers to repository [registry.example.com/test/image]
68062ef20672: Pushing  32.91MB/32.91MB
c1be1566dcab: Pushing  87.04kB
edb3c64b3c34: Pushing  32.39MB/32.39MB
e9638bebbcee: Pushing  28.16kB
3e047053df1e: Pushing   16.9kB
61de46f52718: Waiting
311fb62a7857: Waiting
b5360ddea06a: Waiting
f86570a2e020: Waiting
7ccfd1790eef: Waiting
d2e5ef142830: Waiting
1b7fc168f886: Waiting
6674a01f7b84: Waiting
4a7f7177330e: Waiting
05c47c6acc4c: Waiting
b02dd59d34c0: Waiting
0b800261971d: Waiting
16e3ab2d4dee: Waiting
fbd7d5451c69: Waiting
4fc242d58285: Waiting
unknown blob

해당 오류는 nginx에서 registry를 subdomain으로 설정하면서 생긴 문제인데 애초에 nginx의 config 설정을 잘 했다면 보지 못했을 에러다.

필자의 경우 registry의 subdomain을 아래처럼 설정했다.

server {
    server_name registry.example.com;
    proxy_set_header X-Forwarded-For $remote_addr;
    location / {
         proxy_pass         http://127.0.0.1:5000;
         proxy_set_header   Host $host;
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header   X-Forwarded-Host $server_name;
         proxy_read_timeout  1200s;
         # used for view/edit office file via Office Online Server
         client_max_body_size 0;
    }

......

그런데 여기에 아래 설정을 추가하면 된다.

proxy_set_header   X-Forwarded-Proto $scheme;

Leave a Reply