How do I run private docker images on Google Container Engine
You can push your image to Google Container Registry and reference them from your pod manifest.
Detailed instructions
Assuming you have a DOCKER_HOST
properly setup , a GKE cluster running the last version of Kubernetes and Google Cloud SDK installed.
Setup some environment variables
gcloud components update kubectl gcloud config set project <your-project> gcloud config set compute/zone <your-cluster-zone> gcloud config set container/cluster <your-cluster-name> gcloud container clusters get-credentials <your-cluster-name>
Tag your image
docker tag <your-image> gcr.io/<your-project>/<your-image>
Push your image
gcloud docker push gcr.io/<your-project>/<your-image>
Create a pod manifest for your container:
my-pod.yaml
id: my-pod kind: Pod apiVersion: v1 desiredState: manifest: containers: - name: <container-name> image: gcr.io/<your-project>/<your-image> ...
Schedule this pod
kubectl create -f my-pod.yaml
Repeat from step (4) for each pod you want to run. You can have multiple definitions in a single file using a line with
---
as delimiter.
Step 1: Specify the container in which you have to work on
gcloud container clusters get-credentials [$cluster_name]
Step 2: Tag the docker image you want to run
docker tag nginx gcr.io/first-project/nginx
Step 3: Push image
gcloud docker push gcr.io/first-project/nginx
Step4:Create yaml file (test.yaml)
apiVersion: v1
kind: Pod
containers:
- name : nginx1
image: gcr.io/first-project/nginx
Step 5 : Create the pod
kubectl create –f test.yaml
The setup I use is to deploy my own docker registry combined with ssh port forwarding. For that purpose I set up a ssh server in the cluster and use ~/.ssh/config
to configure a port forward to the registry.
Also I use jenkins to build the images right in the cloud.