Setting up and Accessing the Openshift Registry

Log in to Openshift.

Find the ip address of the registry:

Apparently you get it with defaults:

oc get svc -n default | grep registry

If you explicitly enable it you get it without defaults:

$ oc adm registry
--> Creating registry registry ...
    serviceaccount "registry" created
    clusterrolebinding.authorization.openshift.io "registry-registry-role" created
    deploymentconfig.apps.openshift.io "docker-registry" created
    service "docker-registry" created
--> Success

$ oc get svc
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
docker-registry   ClusterIP   172.30.154.81   <none>        5000/TCP   18m

You can also get it with:

oc get svc/docker-registry -o yaml | grep clusterIP:
  clusterIP: 172.30.154.81

Openshift works on routes so it had actually set everything up for me, and you can use the frontend for it.

Pushing an Image to the registry

Ensure you have https it is at the correct TLS version 1.2+

Get your token (assuming you have logged into the cli)

oc whoami -t

Log into the registry using your token

docker login -u <username> -p <token_value> <registry_ip>:<port>

Tag the container:

A fully qualified docker image name should conform to the following format: <registry>/<repo>/<image>:<tag>

When mapping to OpenShift: <registry>/<project>/<imagestream>:<tag>

docker commit c16378f943fe my-api
docker tag my-api registry.example.co.za:5000/my-project/my-api-image

Tag the remote repo in the image

docker tag my-api registry.example.co.za:5000/my-project/my-api-image

Push the image to openshift

docker push registry.example.co.za:5000/my-project/my-api-image

Important to note that my-project need not be created already

Key here is if you are using the openshift docker repo - you need to follow the specifications of that repo. For example the default docker repo does not require the my-project part.

oc new-project <my-project>

It seems like the project needs to exist