tm1701
tm1701

Reputation: 7591

Openshift & docker - which registry can I use for Minishift?

It is easy to work with Openshift as a Container As A Service, see the detailed steps. So, via the docker client I can work with Openshift.

I would like to work on my laptop with Minishift. That's the local version of Openshift on your laptop.

Which docker registry should I use in combination with Minishift? Minishift doesn't have it's own registry - I guess.

So, I would like to do:

$ maven clean install -- building the application
$ oc login to your minishift environment
$ docker build -t myproject/mynewapplication:latest
$ docker tag -- ?? normally to a openshift docker registry entry
$ docker push -- ?? to a local docker registry?
$ on 1st time: $ oc new-app mynewapplication
$ on updates: $ oc rollout latest dc/mynewapplication-n myproject

Upvotes: 2

Views: 3733

Answers (2)

stewartshea
stewartshea

Reputation: 378

I use just docker and oc cluster up which is very similar. The internal registry that is deployed has an address in the 172.30.0.0/16 space (ie. the default service network).

$ oc login -u system:admin
$ oc get svc -n default  | grep registry
docker-registry   ClusterIP   172.30.1.1     <none>        5000/TCP                  14m

Now, this service IP is internal to the cluster, but it can be exposed on the router:

$oc expose svc docker-registry -n default
$oc get route -n default  | grep registry
docker-registry   docker-registry-default.127.0.0.1.nip.io             docker-registry   5000-tcp                 None

In my example, the route was docker-registry-default.127.0.0.1.nip.io

With this route, you can log in with your developer account and your token

$oc login -u developer
$docker login docker-registry-default.127.0.0.1.nip.io -p $(oc whoami -t) -u developer
Login Succeeded

Note: oc cluster up is ephemeral by default; the docs can provide instructions on how to make this setup persistent.

One additional note is that if you want OpenShift to try to use some of it's native builders, you can simply run oc new-app . --name <appname> from within the your source code directory.

$ cat Dockerfile 
FROM centos:latest

$ oc new-app . --name=app1
--> Found Docker image 49f7960 (5 days old) from Docker Hub for "centos:latest"

    * An image stream will be created as "centos:latest" that will track the source image
    * A Docker build using binary input will be created
      * The resulting image will be pushed to image stream "app1:latest"
      * A binary build was created, use 'start-build --from-dir' to trigger a new build
    * This image will be deployed in deployment config "app1"
    * The image does not expose any ports - if you want to load balance or send traffic to this component
      you will need to create a service with 'expose dc/app1 --port=[port]' later
    * WARNING: Image "centos:latest" runs as the 'root' user which may not be permitted by your cluster administrator

--> Creating resources ...
    imagestream "centos" created
    imagestream "app1" created
    buildconfig "app1" created
    deploymentconfig "app1" created
--> Success
    Build scheduled, use 'oc logs -f bc/app1' to track its progress.
    Run 'oc status' to view your app.

Upvotes: 7

Graham Dumpleton
Graham Dumpleton

Reputation: 58563

There is an internal image registry. You login to it and push images just like you suggest. You just need to know the address and what credentials you need. For details see:

Upvotes: 1

Related Questions