我收到错误无法在本地找到docker映像;但是我可以使用docker run命令运行图像

问题描述 投票:0回答:1

我构建了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命令时,它会抛出此错误。

注意:

  1. 重新整理:很奇怪,我能够逐行运行代码,而没有上述错误。
  2. 我可以在本地运行docker映像而没有任何问题
  3. [docker images命令包含我要处理的图像列表。
  4. 我的容器可见性是https://console.cloud.google.com/gcr/settings上的“私有”,我打算保持这种状态。 (当我将代码公开时,我可以运行该代码-我仍然会收到“无法在本地找到图像警告”,但它会从gcloud中提取图像)

我构建了docker映像,对其进行了标记并使用以下命令docker build -t myimage:version1将其推送。 docker标签myimage:version1 gcr.io/my_test_project/myimage:version1 docker push gcr ....

r docker google-cloud-platform gcloud docker-image
1个回答
0
投票

用于对来自GCE实例的API调用进行身份验证的服务帐户似乎没有访问容器注册表的适当权限。我想说这是由您设置为环境变量的my-secret-key.json表示的服务帐户。

© www.soinside.com 2019 - 2024. All rights reserved.