使用terraform注册表中的docker图像
我正在尝试使用一个docker映像,该映像托管在terraform的docker hub注册表中。当我运行使用terraform注册表中的docker图像,docker,terraform,Docker,Terraform,我正在尝试使用一个docker映像,该映像托管在terraform的docker hub注册表中。当我运行terraform apply时,会说它不存在或者需要docker登录。然后它失败,请求的对资源的访问被拒绝。我做错了什么 main.tf: provider "docker" { host = "npipe:////.//pipe//docker_engine" registry_auth { address = &
terraform apply
时,会说它不存在或者需要docker登录。然后它失败,请求的对资源的访问被拒绝。我做错了什么
main.tf:
provider "docker" {
host = "npipe:////.//pipe//docker_engine"
registry_auth {
address = "registry.hub.docker.com"
username = "username"
password = "passwword"
}
}
resource "docker_image" "ubuntu" {
name = "data.docker_registry_image.ubuntu.name"
pull_triggers = ["data.docker_registry_image.ubuntu.sha256_digest"]
}
data "docker_registry_image" "ubuntu" {
name = "ubuntu:latest"
}
versions.tf:
terraform {
required_providers {
docker = {
source = "terraform-providers/docker"
}
}
required_version = ">= 0.13"
}
错误输出:
Error: Unable to read Docker image into resource: Unable to pull image data.docker_registry_image.ubuntu.name: error pulling image data.docker_registry_image.ubuntu.name: Error response from daemon: pull access denied for data.docker_registry_image.ubuntu.name, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
on main.tf line 11, in resource "docker_image" "ubuntu":
11: resource "docker_image" "ubuntu" {
您需要从
资源“docker\u image”“ubuntu”
块中删除四个引号。您需要从资源“docker\u image”“ubuntu”块中删除四个引号
block.当您运行terraform apply
时,是否可以编辑您的问题以包含完整的错误输出?是的,当然,我添加了错误输出,正如下面的答案所示;您需要删除引号。这使得文档中使用的语法已经过时,仍然需要引用。我正在运行terraform v0.13.3,它不再需要引用和错误。不确定从哪个版本会发生此错误,但至少从v0.13.3开始。您从未想要这样的引用。您可能希望在Terraform 0.11及以下版本中使用插值语法,即“${data.docker\u registry\u image.ubuntu.name}”。这在Terraform 0.12及更高版本中仍然有效,但它会警告您,您应该只使用数据.docker\u registry\u image.ubuntu.name
。请您在运行Terraform apply
时编辑您的问题以包含完整的错误输出?是的,当然,我添加了错误输出,正如下面的答案所示;您需要删除引号。这使得文档中使用的语法已经过时,仍然需要引用。我正在运行terraform v0.13.3,它不再需要引用和错误。不确定从哪个版本会发生此错误,但至少从v0.13.3开始。您从未想要这样的引用。您可能希望在Terraform 0.11及以下版本中使用插值语法,即“${data.docker\u registry\u image.ubuntu.name}”。这在Terraform 0.12及以上版本中仍然是有效的语法,但它会警告您,您应该只使用data.docker\u registry\u image.ubuntu.name
。这看起来是正确的答案,但通常对于回答的小问题/键入错误的问题,我们会对问题进行评论,指出问题,然后按原样投票结束不太可能对未来的人有帮助。这看起来是正确的答案,但通常对于回答的小问题/拼写错误,我们会对问题进行评论,指出问题所在,然后投票以拼写错误结束,因为这不太可能对未来的人有帮助。