How do you reference a private DockerHub image in Kubernetes?

1/22/2017

I am using Kubernetes for the first time, and having a nasty time trying to reference a private DockerHub image.

In the yaml, this is what I have:

.... many other lines
-image: registry.hub.docker.com/MY_DOCKER_HUB_USERNAME/MY_IMAGE_NAME:latest

The error I'm getting says

Failed to pull image "registry.hub.docker.com/MY_DOCKER_HUB_USERNAME/MY_IMAGE_NAME:latest":
image pull failed for registry.hub.docker.com/MY_DOCKER_HUB_USERNAME/MY_IMAGE_NAME:latest, 
this may be because there are no credentials on this request. 
details: (Error: image MY_DOCKER_HUB_USERNAME/MY_IMAGE_NAME not found)

Now, I am a total know-nothing when it comes to Kubernetes configuration, but so far, where have I gone wrong?

-- Bryan Rayner
dockerhub
kubernetes

1 Answer

1/24/2017

Here is an example on how to create a secret key for your private repos an reference it in a deployment:

  1. create the secret key

    kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
  2. use it in a deployment

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: example
      namespace: default
    spec:
      replicas: 1
      strategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0
        type: RollingUpdate
      template:
        metadata:
          labels:
            run: example
        spec:
          containers:
          - name: example
            image: myregistryrepo/myimage:latest
            ports:
            - containerPort: 80
              name: http
            imagePullPolicy: Always
          imagePullSecrets:
            - name: myregistrykey
-- Camil
Source: StackOverflow