【问题标题】:How do I run private docker images on Google Container Engine如何在 Google Container Engine 上运行私有 Docker 映像
【发布时间】:2014-11-06 20:07:22
【问题描述】:

如何运行我在 Google Container Engine 上本地构建的 docker 映像?

【问题讨论】:

    标签: docker kubernetes google-kubernetes-engine google-container-registry


    【解决方案1】:

    您可以将您的图片推送到 Google Container Registry 并从您的 pod 清单中引用它们。

    详细说明

    假设您已正确设置 DOCKER_HOST,运行最新版本 Kubernetes 的 GKE 集群并安装了 Google Cloud SDK

    1. 设置一些环境变量

      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>
      
    2. 标记您的图像

      docker tag <your-image> gcr.io/<your-project>/<your-image>
      
    3. 推送你的图片

      gcloud docker push gcr.io/<your-project>/<your-image>
      
    4. 为您的容器创建一个 pod 清单:my-pod.yaml

      id: my-pod
      kind: Pod
      apiVersion: v1
      desiredState:
        manifest:
          containers:
          - name: <container-name>
            image: gcr.io/<your-project>/<your-image>
          ...
      
    5. 安排这个 pod

      kubectl create -f my-pod.yaml
      
    6. 对要运行的每个 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
    • Google Container Engine (GKE) 已移至 Kubernetes 0.6.1,因此不再使用 localhost。当前的解决方法是通过 IP 引用您的私有存储库。另见:github.com/GoogleCloudPlatform/kubernetes/wiki/User-FAQ
    • 更新了答案以使用Google Container Registry
    • 是否可以使用来自 docker hub 的图像,或者必须将其上传到标记为 'gcr.io/' 的 gcloud 注册表中?我可能错过了一些东西。
    【解决方案2】:

    我使用的设置是deploy my own docker registry 结合ssh 端口转发。为此,我在集群中设置了一个 ssh 服务器,并使用~/.ssh/config 配置一个端口转发到注册表。

    我还使用 jenkins 在云端构建图像。

    【讨论】:

      【解决方案3】:

      第 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
      

      【讨论】:

        【解决方案4】:

        您可以在启动 pod 之前将私有 docker 注册表的注册表身份验证密钥复制到 minions 根目录中的 .dockercfg 文件中。 或者在启动之前在 minions 上运行 docker login。

            docker login --username=<> --password=<> --email=<> <DockerServer>
        

        在 pod 配置中引用私有 docker 映像应该会按预期工作。

        【讨论】:

        • 在哪里可以找到 Google Container Registry 的用户名和密码?
        • 有没有办法在 GKE 中实现自动化?我尝试在节点上运行 docker login,但在启动工作负载时仍然出现 imagepulloff 错误。我正在使用 gitlab 容器注册表,它允许您使用密码和/或令牌登录。
        猜你喜欢
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        相关资源
        最近更新 更多