Harbor: Remove /library prefix for default project

Created on 5 Feb 2020  路  6Comments  路  Source: goharbor/harbor

Hello

We have been using the docker registry distribution backed up by S3 bucket for our docker images and everything is pushed directly to the root of the registry under this pattern most of the time registry.domain.com/project:tag. I am looking for a way to keep supporting this pattern on while migrating to Harbor.
Even with the library project created a push to harbor.domain.com/project will result to 500 HTTP Error with the logs below in harbor registry:

harbor-registry-758d779d7f-grqvl registry 100.96.15.49 - - [05/Feb/2020:16:10:40 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/19.03.5 go/go1.12.12 git-commit/633a0ea kernel/4.9.184-linuxkit os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.5 \\(darwin\\))"
harbor-registry-758d779d7f-grqvl registry time="2020-02-05T16:10:40.864638741Z" level=warning msg="error authorizing context: authorization token required" go.version=go1.12.12 http.request.host=harbor-core-staging.domain.com http.request.id=23b12029-9f09-42d3-a133-a0f524f28ce5 http.request.method=GET http.request.remoteaddr=195.68.96.226 http.request.uri="/v2/" http.request.useragent="docker/19.03.5 go/go1.12.12 git-commit/633a0ea kernel/4.9.184-linuxkit os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.5 \(darwin\))"

Is there a way to achieve this on Harbor level and while I am on the subject what is the best way to migrate the old registry and even to use the same s3 bucket from the current registry ?

Thanks

kinrequirement

Most helpful comment

+1

Empty project name, or possibility to specify default project name would be great.

Default project could work like that:

  1. Harbor have project "library", which is set as default (only one project in Harbor can be set as default)
  2. User can push to default project with command "docker push registry/image:tag" which is equivalent to "docker push registry/library/image:tag"
  3. User can pull from default project with command "docker pull registry/image:tag" which is equivalent to "docker pull registry/library/image:tag"

All 6 comments

currently harbor project need a name, so can't remove the default name library, and it maybe not easy to implement.
@xaleeks How do you think about this requirement?

Hello,

Thank you @bitsf for the comment, please let me know if there is anything that I can help with.

+1

Empty project name, or possibility to specify default project name would be great.

Default project could work like that:

  1. Harbor have project "library", which is set as default (only one project in Harbor can be set as default)
  2. User can push to default project with command "docker push registry/image:tag" which is equivalent to "docker push registry/library/image:tag"
  3. User can pull from default project with command "docker pull registry/image:tag" which is equivalent to "docker pull registry/library/image:tag"

@szimonek
To support that we have to tamper user's request, I wish to suggest not to do that until really have to.
I don't think adding library is much work for the user.

@reasonerjt
I was able to surpass that limitation by using Harbor in tandem with containerd.
CRI plugin for containerd has a lot of great features. User can define custom endpoints to external registires -> https://github.com/containerd/cri/blob/master/docs/registry.md
I have made Harbor my own docker.io , gcr.io and quay.io and have done it in corporate environment, where Harbor and containerd have no access to Internet.

@szimonek I would think it's a hack but I'm happy you figured it out.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

andrewtchin picture andrewtchin  路  3Comments

pingcrosby picture pingcrosby  路  3Comments

reasonerjt picture reasonerjt  路  3Comments

xiaosadexiaohai picture xiaosadexiaohai  路  3Comments

cedvan picture cedvan  路  3Comments