所以我用terraform设置了一个最小的实例,并希望在上面使用一个码头映像。所需的映像被推送到同一个项目中的工件存储库中。
错误
问题是,无论我做什么,当我试图使用工件回购中指定的拉命令进行拉时,我得到:
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代码
#
# 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"
}发布于 2022-09-07 15:07:18
解决方案
在浪费了太多时间之后,我发现在将我的用户添加到docker组并运行没有sudo的docker之后,它突然起作用了。
如图所示:https://docs.docker.com/engine/install/linux-postinstall/
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,您还需要运行
sudo gcloud auth configure-docker我以为我试过了,但这就是.
https://stackoverflow.com/questions/73637788
复制相似问题