I found the documentation for actually replicating images from DockerHub to a local Harbor instance to be missing. So here’s what I’ve found:
Objective: Replicate the images for the Yelb sample application to local Harbor repo
Set-up and Prereqs
- A local Harbor instance – I’ll be using an Enterprise PKS foundation with Harbor 1.10
- An account for DockerHub
Steps
-
-
- Login to Harbor Web GUI as an administrator. Navigate to Administration/Registries
- Add Endpoint for local Harbor by clicking ‘New Endpoint’ and entering the following:
- Provider: harbor
- Name: local (or FQDN or whatever)
- Description: optional
- Endpoint URL: the actual URL for your harbor instance beginning with https and ending with :443
- Access ID: username for an admin or user that at least has Project Admin permission to the target Projects/namespaces
- Access Secret: Password for the account above
- Verify Remote Cert: typically checked
- Add Endpoint for Docker Hub by clicking ‘New Endpoint’ and entering the following:
- Provider: docker-hub
- Name: dockerhub (or something equally profound)
- Description: optional
- Endpoint URL: pre-populated/li>
- Access ID: username for your account at dockerhub
- Access Secret: Password for the account above
- Verify Remote Cert: typically checked
Notice that this is for general dockerhub, not targeting a particular repo.
- Configure Replications for the Yelb Images
You may create replications for several images at once using a variety of filters, but I’m going to create a replication rule for each image we need. I think this makes it easier to identify a problem, removes the risk of replicating too much and makes administration easier. Click ‘New Replication Rule‘ enter the following to create our first rule:- Name: yelb-db-0.5
- Description: optional
- Replication Mode: Pull-based (because we’re pulling the image from DockerHub)
- Source registry: dockerhub
- Source Registry Filter – Name: mreferre/yelb-db
- Source Registry Filter – Tag: 0.5
- Source Registry Filter – Resource: pre-populated
- Destination Namespace: yelb (or whatever Project you want the images saved to)
- Trigger Mode: Select ‘Manual’ for a one-time sync or select ‘Scheduled’ if you want to ensure the image is replicated periodically. Note that the schedule format is cron with seconds, so 0 0 23 * * 5 would trigger the replication to run every Friday at 23:00:00. Scheduled replication makes sense when the tag filter is ‘latest’ for example
- Override: leave checked to overwrite the image if it already exists
- Enable rule: leave checked to keep the rule enabled
- Add the remaining Replication Rules:
Name Name Filter Tag Filter Dest Namespace yelb-ui-latest mreferre/yelb-ui latest yelb yelb-appserver-latest mreferre/yelb-appserver latest yelb redis-4.0.2 library/redis 4.0.2 yelb Note that redis is an official image, so we have to include library/
-