【问题标题】:How do I run a docker image on google container engine?如何在谷歌容器引擎上运行 docker 镜像?
【发布时间】:2015-07-28 23:49:18
【问题描述】:

我正在尝试在 Google Container Engine 中运行 docker 映像。该实例没有运行 docker 镜像。我可以 ssh 并运行 docker 命令,然后服务就会启动。但是当我从终端启动实例时什么也没有发生。有人可以看看我做错了什么。

我的 docker 文件看起来像

FROM golang
RUN mkdir -p /app
COPY . /app
RUN go get golang.org/x/tools/cmd/present
ENTRYPOINT cd /app && /go/bin/present -http=":8080"
EXPOSE 8080

containers.yaml 看起来像

version: v1beta3
containers:
  - name: talks
    image: sheki/talks 
    ports:
      - name: http-port
        containerPort: 8080
        hostPort: 80'

启动实例的命令是

gcloud compute instances create zoop \
    --image container-vm \
    --metadata-from-file google-container-manifest=containers.yaml \
    --zone us-central1-a \
    --machine-type f1-micro

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    您在问题中提到您使用的是谷歌容器引擎,但实际上您使用的是container vm(有点不同)。如果您想使用容器引擎,请查看文档以创建container cluster

    我运行了您的示例,在 /var/log/kubelet.log 中看到以下错误:

    E0519 17:05:41.285556    2414 http.go:54] Failed to read URL: http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/google-cont
    ainer-manifest: received 'version: v1beta3
    containers:
      - name: talks
        image: sheki/talks 
        ports:
          - name: http-port
            containerPort: 8080
            hostPort: 80'
    ', but couldn't parse as neither single (error unmarshaling JSON: json: cannot unmarshal string into Go value of type int: {Version:v1beta3 ID: UUID:
     Volumes:[] Containers:[{Name:talks Image:sheki/talks Entrypoint:[] Command:[] WorkingDir: Ports:[{Name:http-port HostPort:0 ContainerPort:8080 Proto
    col: HostIP:}] Env:[] Resources:{Limits:map[] Requests:map[]} CPU:0 Memory:0 VolumeMounts:[] LivenessProbe:<nil> ReadinessProbe:<nil> Lifecycle:<nil>
     TerminationMessagePath: Privileged:false ImagePullPolicy: Capabilities:{Add:[] Drop:[]}}] RestartPolicy:{Always:<nil> OnFailure:<nil> Never:<nil>} D
    NSPolicy: HostNetwork:false}) or multiple manifests (error unmarshaling JSON: json: cannot unmarshal object into Go value of type []v1beta1.Container
    Manifest: []) nor single (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"containerPort":8080,"hostPort":"80'","name
    ":"http-port"}]}],"version":"v1beta3"}') or multiple pods (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"container
    Port":8080,"hostPort":"80'","name":"http-port"}]}],"version":"v1beta3"}').
    

    容器 vms 的文档似乎已过时。

    【讨论】:

    • 如果我只是在试验 docker 容器而不计划任何大型基础设施,您是否建议在容器集群上使用容器 VM?我可能会使用最多 3 个容器创建应用程序 - Web 服务器、数据库 +1 容器,运行类似 discourse 的东西。
    • 我有偏见,但我认为即使对于少量容器,使用容器集群也更简单,因为它允许您在想要更改容器时轻松重新部署容器(例如当您升级软件)。它还允许您将容器配置为全部在一台机器上运行(例如,当您在本地开发时),然后在部署到云提供商时将它们扩展到多台机器上。
    猜你喜欢
    • 2020-03-02
    • 2019-04-30
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多