如何在从我的项目容器映像创建实例时创建容器

How can I create containers at time of instance creation from my project container images

我正在尝试使用机器启动时创建的容器启动 container-vm Google Compute Engine VM 实例。您可以在本文档部分找到这样的示例:Creating containers at time of instance creation.

给定的示例一切正常:

apiVersion: v1
kind: Pod
metadata:
  name: service
spec:
  containers:
    - name: jillix-service
      image: gcr.io/google-containers/busybox
      command: ['nc', '-p', '8000', '-l', '-l', '-e', 'echo', 'hello world!']
      imagePullPolicy: Always
      ports:
        - containerPort: 8000
          hostPort: 80

但是当我尝试使用我自己的容器镜像时,该镜像不起作用:

apiVersion: v1
kind: Pod
metadata:
  name: service
spec:
  containers:
    - name: jillix-service
      image: gcr.io/sigma-cairn-99810/service
      imagePullPolicy: Always
      ports:
        - containerPort: 8000
          hostPort: 80

在工作示例中 docker 报告以下容器映像位于 VM 上:

$ sudo  docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
gcr.io/google_containers/pause     0.8.0               2c40b0526b63        7 months ago        241.7 kB
gcr.io/google-containers/busybox   latest              4986bf8c1536        10 months ago       2.433 MB

但是当我使用我的容器镜像时,它丢失了:

gabriel@container-image-builder:~$ sudo docker images

存储库标记图像 ID 已创建虚拟大小 gcr.io/google_containers/pause 0.8.0 2c40b0526b63 7 个月前 241.7 kB

所以,我认为这就是我的容器没有启动的原因。但是为什么 VM 不下载我的 gcr.io/sigma-cairn-99810/service 图像?

它与身份验证有什么关系吗? (当我手动登录到 VM 并 gcloud docker pull 时,系统会先提示我 gcloud auth login,然后我可以拉取我的镜像并 docker run 它正常并且一切正常。)

您启动的容器虚拟机是否(至少)具有存储 "read only" 范围?

您可以通过以下方式检查:

curl -H 'Metadata-Flavor: Google' http://metadata.google.internal./computeMetadata/v1/instance/service-accounts/default/scopes