首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对停靠点请求的拒绝权限

对停靠点请求的拒绝权限
EN

Stack Overflow用户
提问于 2022-09-07 15:07:18
回答 1查看 328关注 0票数 0

所以我用terraform设置了一个最小的实例,并希望在上面使用一个码头映像。所需的映像被推送到同一个项目中的工件存储库中。

错误

问题是,无论我做什么,当我试图使用工件回购中指定的拉命令进行拉时,我得到:

代码语言:javascript
复制
sudo docker pull europe-west3-docker.pkg.dev/[project]/[repo]/[image]:latest
Error response from daemon: 
Head "https://europe-west3-docker.pkg.dev/v2/[project]/[repo]/api/manifests/latest": denied: 
Permission "artifactregistry.repositories.downloadArtifacts" denied on resource "projects/[project]/locations/europe-west3/repositories/[repo]" (or it may not exist)

调试尝试

我试过的是:

  • 默认服务帐户应该有权限,无需任何其他设置。为了调试并确保没有出错,我尝试自己创建一个具有必要角色的服务帐户。
  • 尝试使用策略故障排除工具调试访问,应该可以进行访问。
  • 确保使用gcloud auth configure-docker europe-west3-docker.pkg.dev启用docker,并使用gcloud auth list调试已使用的帐户。
  • 在我的本地机器上尝试了拉命令,运行得完美无缺
  • 尝试通过gcloud artifacts docker images list [repo]访问回购程序,工作也很好
  • 试图运行gcloud init
  • 试着从正式的码头回购机上提取图像,效果也很完美。

供参考的Terraform代码

代码语言:javascript
复制
#
# INSTANCE
#
resource "google_compute_instance" "mono" {
  name = "mono"
  machine_type = "n1-standard-1"
  allow_stopping_for_update = true  # allows hard updating

  service_account {
    scopes = ["cloud-platform"]
  }

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {

    }
  }
}


#
# REPO
#
resource "google_artifact_registry_repository" "repo" {
  location      = var.location
  repository_id = var.project_name
  format        = "DOCKER"
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-07 15:07:18

解决方案

在浪费了太多时间之后,我发现在将我的用户添加到docker组并运行没有sudo的docker之后,它突然起作用了。

如图所示:https://docs.docker.com/engine/install/linux-postinstall/

代码语言:javascript
复制
sudo groupadd docker
sudo usermod -aG docker $USER
# exit and login again via ssh

解释

根据文档

注意:如果您通常使用sudo在Linux上运行Docker命令,那么Docker将在/root/.docker/config.json中查找Artifact凭据,而不是在$HOME/.docker/config.json中查找。如果您想使用sudo with docker命令而不是使用Docker安全组,请使用sudo auth配置-docker配置凭据。

因此,如果您在sudo中使用docker,您还需要运行

代码语言:javascript
复制
sudo gcloud auth configure-docker

我以为我试过了,但这就是.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73637788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档