【发布时间】:2014-11-06 20:07:22
【问题描述】:
如何运行我在 Google Container Engine 上本地构建的 docker 映像?
【问题讨论】:
标签: docker kubernetes google-kubernetes-engine google-container-registry
如何运行我在 Google Container Engine 上本地构建的 docker 映像?
【问题讨论】:
标签: docker kubernetes google-kubernetes-engine google-container-registry
您可以将您的图片推送到 Google Container Registry 并从您的 pod 清单中引用它们。
假设您已正确设置 DOCKER_HOST,运行最新版本 Kubernetes 的 GKE 集群并安装了 Google Cloud SDK。
设置一些环境变量
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>
标记您的图像
docker tag <your-image> gcr.io/<your-project>/<your-image>
推送你的图片
gcloud docker push gcr.io/<your-project>/<your-image>
为您的容器创建一个 pod 清单:my-pod.yaml
id: my-pod
kind: Pod
apiVersion: v1
desiredState:
manifest:
containers:
- name: <container-name>
image: gcr.io/<your-project>/<your-image>
...
安排这个 pod
kubectl create -f my-pod.yaml
对要运行的每个 pod 重复步骤 (4)。您可以使用以--- 作为分隔符的行在单个文件中包含多个定义。
【讨论】:
gcloud preview container pods --cluster-name cluster-1 create --zone europe-west1-c --config-file registry-pod.yaml 上有一个resource.go:132] The resource in the provided file has no apiVersion defined
我使用的设置是deploy my own docker registry 结合ssh 端口转发。为此,我在集群中设置了一个 ssh 服务器,并使用~/.ssh/config 配置一个端口转发到注册表。
我还使用 jenkins 在云端构建图像。
【讨论】:
第 1 步:指定您必须在其中工作的容器
gcloud container clusters get-credentials [$cluster_name]
第 2 步:标记要运行的 docker 映像
docker tag nginx gcr.io/first-project/nginx
第三步:推送图片
gcloud docker push gcr.io/first-project/nginx
Step4:创建yaml文件(test.yaml)
apiVersion: v1
kind: Pod
containers:
- name : nginx1
image: gcr.io/first-project/nginx
第 5 步:创建 pod
kubectl create –f test.yaml
【讨论】:
您可以在启动 pod 之前将私有 docker 注册表的注册表身份验证密钥复制到 minions 根目录中的 .dockercfg 文件中。 或者在启动之前在 minions 上运行 docker login。
docker login --username=<> --password=<> --email=<> <DockerServer>
在 pod 配置中引用私有 docker 映像应该会按预期工作。
【讨论】: