我构建了docker映像,对其进行了标记并使用以下命令将其推送
docker build -t myimage:version1 .
docker tag myimage:version1 gcr.io/my_test_project/myimage:version1
docker push gcr.io/my_test_project/myimage:version1
我从[https://cloudyr.github.io/googleComputeEngineR/articles/massive-parallel.html]开始执行以下步骤:>
我的my_test.R文件如下:
rm(list=ls()) project <- "my_test_project" zone <- "us-central1-a" account_key <-"~/my-secret-key.json" Sys.setenv(GCE_AUTH_FILE = account_key, GCE_DEFAULT_PROJECT_ID = project, GCE_DEFAULT_ZONE = zone) library("googleComputeEngineR") library("future") library("future.apply") library("parallel") gce_global_project(project) gce_global_zone(zone) my_docker <- gce_tag_container(container_name="myimage:version1") vm_base_name <- "vm-base-00" cluster_size = 3 vm_names <- paste0(vm_base_name, seq(1,cluster_size)) vms <- gce_vm_cluster(vm_prefix=vm_base_name, cluster_size=cluster_size, docker_image = my_docker, ssh_args = list(username="test_user", key.pub="/home/test_user/.ssh/google_compute_engine.pub", key.private="/home/test_user/.ssh/google_compute_engine"), predefined_type = "n1-highmem-2") plan(strategy="cluster", workers = as.cluster(vms, docker_image=my_docker)) gce_vm_stop(vms) gce_vm_delete(vms)
我收到以下错误:
Unable to find image 'gcr.io/my_test_project/myimage:version1' locally /usr/bin/docker: Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication. See '/usr/bin/docker run --help'.
我确实调试了代码:
plan(strategy="cluster", workers = as.cluster(vms, docker_image=my_docker))
行触发错误。
当我逐行运行代码时,上面的plan
命令运行正常。但是当我source("my_test.R")
运行plan
命令时,它会抛出此错误。
注意:
docker images
命令包含我要处理的图像列表。我构建了docker映像,对其进行了标记并使用以下命令docker build -t myimage:version1将其推送。 docker标签myimage:version1 gcr.io/my_test_project/myimage:version1 docker push gcr ....
用于对来自GCE实例的API调用进行身份验证的服务帐户似乎没有访问容器注册表的适当权限。我想说这是由您设置为环境变量的my-secret-key.json
表示的服务帐户。