Reputation: 10504
How do I run a docker image that I built locally on Google Container Engine?
Upvotes: 38
Views: 11569
Reputation: 51
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
Upvotes: 1
Reputation: 2949
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.
Upvotes: 1
Reputation: 10504
You can push your image to Google Container Registry and reference them from your pod manifest.
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.
Upvotes: 48
Reputation: 29
You could copy the registry authentication key of your private docker registry to the .dockercfg file in the root directory of the minions right before starting the pods. Or run docker login on minions before starting.
docker login --username=<> --password=<> --email=<> <DockerServer>
Referring to the private docker image in the pod configuration should then work as expected.
Upvotes: 0