我刚刚为一个新的计算引擎VM部署完成了一组命令:
docker build . -t $GCR_ADDRESS
docker push $GCR_ADDRESS
gcloud compute instances create $APP_ID --image-project=cos-cloud --image-family=cos-77-lts --machine-type=e2-micro --zone=us-central1-a --metadata=GCR_ADDRESS=$GCR_ADDRESS --metadata-from-file=startup-script=./start.sh --tags=http-server,https-server --scopes=default,bigquery,compute-rw --address=$APP_ID-ip
它失败了,因为启动脚本无法运行以下内容:
docker run --rm gcr.io/my-project/my-app:latest
有错误:
docker: Error response from daemon: manifest for gcr.io/my-project/my-app:latest not found: manifest unknown: Failed to fetch "latest" from request
t "/v2/my-project/my-app/manifests/latest"
我已经ssh登录到这个实例中,并再次运行docker run --rm gcr.io/my-project/my-app:latest
。它奏效了。
这非常令人不安。这是否意味着docker push
命令在gcr.io使图像可用之前完成?
对我来说,这是意料之中的事。
$ gcloud compute instances create test-so00 --image-project=cos-cloud --image-family=cos-77-lts --machine-type=e2-micro --zone=us-central1-a --metadata=GCR_ADDRESS=gcr.io/xxxxxx-projects-xxxxxx/alpine:latest --metadata-from-file=startup-script=./start.sh --tags=http-server,https-server --scopes=default,bigquery,compute-rw
已创建[https://www.googleapis.com/compute/v1/projects/xxxxxxx-projects-xxxxxx/zones/us-central1-a/instances/test-so00]。
名称区域MACHINE_TYPE可抢占INTERNAL_IP EXTERNAL_IP状态test-so00 us-central1-a e2 micro 10.xxxx.0.31 35.224.xx.xxx正在运行