update registry from 2.5.0 to 2.5.1

This commit is contained in:
yhua 2016-12-15 11:32:21 +08:00
parent 2585b5d4e7
commit 0249f2181a
10 changed files with 109 additions and 147 deletions

View File

@ -267,7 +267,7 @@ package_offline: compile build modify_composefile
@cp NOTICE $(HARBORPKG)/NOTICE
@echo "pulling nginx and registry..."
@$(DOCKERPULL) registry:2.5.0
@$(DOCKERPULL) registry:2.5.1
@$(DOCKERPULL) nginx:1.11.5
@echo "saving harbor docker image"
@ -276,7 +276,7 @@ package_offline: compile build modify_composefile
$(DOCKERIMAGENAME_LOG):$(VERSIONTAG) \
$(DOCKERIMAGENAME_DB):$(VERSIONTAG) \
$(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG) \
nginx:1.11.5 registry:2.5.0 photon:1.0
nginx:1.11.5 registry:2.5.1 photon:1.0
@$(TARCMD) -zcvf harbor-offline-installer-$(VERSIONTAG).tgz \
--exclude=$(HARBORPKG)/common/db --exclude=$(HARBORPKG)/common/config\
@ -334,7 +334,7 @@ cleanimage:
- $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_DB):$(VERSIONTAG)
- $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_JOBSERVICE):$(VERSIONTAG)
- $(DOCKERRMIMAGE) -f $(DOCKERIMAGENAME_LOG):$(VERSIONTAG)
# - $(DOCKERRMIMAGE) -f registry:2.5.0
# - $(DOCKERRMIMAGE) -f registry:2.5.1
# - $(DOCKERRMIMAGE) -f nginx:1.11.5
cleandockercomposefile:

View File

@ -191,14 +191,14 @@ Run the below commands on the host which Harbor is deployed on to preview what f
```sh
$ docker-compose stop
$ docker run -it --name gc --rm --volumes-from registry registry:2.5.0 garbage-collect --dry-run /etc/registry/config.yml
$ docker run -it --name gc --rm --volumes-from registry registry:2.5.1 garbage-collect --dry-run /etc/registry/config.yml
```
**NOTE:** The above option "--dry-run" will print the progress without removing any data.
Verify the result of the above test, then use the below commands to perform garbage collection and restart Harbor.
```sh
$ docker run -it --name gc --rm --volumes-from registry registry:2.5.0 garbage-collect /etc/registry/config.yml
$ docker run -it --name gc --rm --volumes-from registry registry:2.5.1 garbage-collect /etc/registry/config.yml
$ docker-compose start
```

View File

@ -10,7 +10,7 @@ services:
ports:
- 1514:514
registry:
image: library/registry:2.5.0
image: library/registry:2.5.1
restart: always
volumes:
- /data/registry:/storage

View File

@ -9,7 +9,7 @@ services:
ports:
- 1514:514
registry:
image: library/registry:2.5.0
image: library/registry:2.5.1
container_name: registry
restart: always
volumes:

View File

@ -46,9 +46,6 @@ func (mb *builder) Build(ctx context.Context) (distribution.Manifest, error) {
m.Config, err = mb.bs.Stat(ctx, configDigest)
switch err {
case nil:
// Override MediaType, since Put always replaces the specified media
// type with application/octet-stream in the descriptor it returns.
m.Config.MediaType = MediaTypeConfig
return FromStruct(m)
case distribution.ErrBlobUnknown:
// nop

View File

@ -55,7 +55,7 @@ var (
HTTPStatusCode: http.StatusForbidden,
})
// ErrorCodeUnavailable provides a common error to report unavailability
// ErrorCodeUnavailable provides a common error to report unavialability
// of a service or endpoint.
ErrorCodeUnavailable = Register("errcode", ErrorDescriptor{
Value: "UNAVAILABLE",

View File

@ -175,27 +175,6 @@ var (
errcode.ErrorCodeDenied,
},
}
tooManyRequestsDescriptor = ResponseDescriptor{
Name: "Too Many Requests",
StatusCode: http.StatusTooManyRequests,
Description: "The client made too many requests within a time interval.",
Headers: []ParameterDescriptor{
{
Name: "Content-Length",
Type: "integer",
Description: "Length of the JSON response body.",
Format: "<length>",
},
},
Body: BodyDescriptor{
ContentType: "application/json; charset=utf-8",
Format: errorsBody,
},
ErrorCodes: []errcode.ErrorCode{
errcode.ErrorCodeTooManyRequests,
},
}
)
const (
@ -223,6 +202,17 @@ const (
...
]
}`
unauthorizedErrorsBody = `{
"errors:" [
{
"code": "UNAUTHORIZED",
"message": "access to the requested resource is not authorized",
"detail": ...
},
...
]
}`
)
// APIDescriptor exports descriptions of the layout of the v2 registry API.
@ -401,7 +391,6 @@ var routeDescriptors = []RouteDescriptor{
StatusCode: http.StatusNotFound,
},
unauthorizedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -456,7 +445,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
{
@ -493,7 +481,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -548,7 +535,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -606,7 +592,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
{
Name: "Missing Layer(s)",
Description: "One or more layers may be missing during a manifest upload. If so, the missing layers will be enumerated in the error response.",
@ -676,7 +661,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
{
Name: "Unknown Manifest",
Description: "The specified `name` or `reference` are unknown to the registry and the delete was unable to proceed. Clients can assume the manifest was already deleted if this response is returned.",
@ -785,7 +769,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
{
@ -860,7 +843,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -927,7 +909,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -1012,7 +993,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
{
@ -1059,7 +1039,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
{
@ -1124,7 +1103,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -1197,7 +1175,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -1272,7 +1249,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
{
@ -1358,7 +1334,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -1449,7 +1424,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},
@ -1506,7 +1480,6 @@ var routeDescriptors = []RouteDescriptor{
unauthorizedResponseDescriptor,
repositoryNotFoundResponseDescriptor,
deniedResponseDescriptor,
tooManyRequestsDescriptor,
},
},
},

View File

@ -10,7 +10,6 @@ import (
"net/http"
"net/url"
"strconv"
"strings"
"time"
"github.com/docker/distribution"
@ -214,35 +213,28 @@ func (t *tags) All(ctx context.Context) ([]string, error) {
return tags, err
}
for {
resp, err := t.client.Get(u)
resp, err := t.client.Get(u)
if err != nil {
return tags, err
}
defer resp.Body.Close()
if SuccessStatus(resp.StatusCode) {
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return tags, err
}
defer resp.Body.Close()
if SuccessStatus(resp.StatusCode) {
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return tags, err
}
tagsResponse := struct {
Tags []string `json:"tags"`
}{}
if err := json.Unmarshal(b, &tagsResponse); err != nil {
return tags, err
}
tags = append(tags, tagsResponse.Tags...)
if link := resp.Header.Get("Link"); link != "" {
u = strings.Trim(strings.Split(link, ";")[0], "<>")
} else {
return tags, nil
}
} else {
return tags, HandleErrorResponse(resp)
tagsResponse := struct {
Tags []string `json:"tags"`
}{}
if err := json.Unmarshal(b, &tagsResponse); err != nil {
return tags, err
}
tags = tagsResponse.Tags
return tags, nil
}
return tags, HandleErrorResponse(resp)
}
func descriptorFromResponse(response *http.Response) (distribution.Descriptor, error) {

146
src/vendor/vendor.json vendored
View File

@ -135,138 +135,138 @@
{
"checksumSHA1": "dyW7eJt0inBkevS8lV0eb0Pm6MA=",
"path": "github.com/docker/distribution",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "qyi/ywyMfrOzLHOFUmfptEgicyQ=",
"path": "github.com/docker/distribution/context",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "f1wARLDzsF/JoyN01yoxXEwFIp8=",
"path": "github.com/docker/distribution/digest",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "9ymKULEPvYfNX+PCqIZfq5CMP/c=",
"path": "github.com/docker/distribution/manifest",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "XFMuuUrVW18yXJr0Br+RNh6lpf8=",
"path": "github.com/docker/distribution/manifest/schema1",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "CYiLSnQezNFsLxxrnVzLBqvwD5U=",
"checksumSHA1": "ZuTHl2f1hNYKoBnQXFXxYtwXg6Y=",
"path": "github.com/docker/distribution/manifest/schema2",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "PzXRTLmmqWXxmDqdIXLcRYBma18=",
"path": "github.com/docker/distribution/reference",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "ClxxEM8HAe3DrneFwpUoIgoW+XA=",
"checksumSHA1": "gVQRg7cbsvj1rhXm3LrbaoaDKbA=",
"path": "github.com/docker/distribution/registry/api/errcode",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "nHJXXHgsdUVnkuR0SA2DUJgSLgQ=",
"checksumSHA1": "8eDeP6DuTNsskvENoAyICs/QyN0=",
"path": "github.com/docker/distribution/registry/api/v2",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "Ew29UsY4X4DuSd/DRz3MoMsocvs=",
"path": "github.com/docker/distribution/registry/auth",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "k/JJaY5xB9e/fMDg14wFQQbRYe0=",
"path": "github.com/docker/distribution/registry/auth/token",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "oV+QvpZYx+LFW4fDbQNJeskjJmU=",
"checksumSHA1": "kUKO43CFnGqE5o3jwfijuIk/XQQ=",
"path": "github.com/docker/distribution/registry/client",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "sENYoE05tfuTC38SKYC+lKCDI1s=",
"path": "github.com/docker/distribution/registry/client/auth",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "VDfI80dOZWOJU7+neHqv2uT5Th8=",
"path": "github.com/docker/distribution/registry/client/transport",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "OfCHyYvzswfb+mAswNnEJmiQSq4=",
"path": "github.com/docker/distribution/registry/storage/cache",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "Uly2iPDPUbNtilosM7ERs1ZrcAY=",
"path": "github.com/docker/distribution/registry/storage/cache/memory",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "cNp7rNReJHvdSfrIetXS9RGsLSo=",
"path": "github.com/docker/distribution/uuid",
"revision": "a9b1322edf48b1fb9aee4e5ded7a4f4ac37c6830",
"revisionTime": "2016-07-12T18:18:54Z",
"version": "v2.5.0",
"versionExact": "v2.5.0"
"revision": "12acdf0a6c1e56d965ac6eb395d2bce687bf22fc",
"revisionTime": "2016-08-06T00:21:48Z",
"version": "v2.5.1",
"versionExact": "v2.5.1"
},
{
"checksumSHA1": "sNAU9ojYVUhO6dVXey6T3JhRQpw=",
@ -323,5 +323,5 @@
"revision": ""
}
],
"rootPath": "github.com/vmware/harbor"
"rootPath": "github.com/vmware/harbor/src"
}

View File

@ -1,7 +1,7 @@
version: '2'
services:
registry:
image: library/registry:2.5.0
image: library/registry:2.5.1
restart: always
volumes:
- /data/registry:/storage