terraform提供程序+docker注册表v2=404



我试图使用terraform启动一些容器,从我自己的注册表中提取这些容器,但无法通过ping docker服务器验证,在那里我得到了一个fugly:* Error pinging Docker server: API error (404): 404 page not found错误。

为了更好地解释这一点,我按照docker文档所指出的那样启动了注册表;之后推送了一个图像,并尝试使用地形应用非常基本的.tf配置:

docker.tf

# set provider to local registry
provider "docker" {
    host = "http://docker.localhost.com:5000/v2/ubuntu"
}
# create container
resource "docker_container" "test" {
    image = "latest"
    name = "test"
}

我可以使用像http://docker.localhost.com:5000/v2/ubuntu/_manifests/latest这样的URL来提取清单和图像,不会有太大问题,但当运行terraform时,情况会恶化,我得到的只是一个错误。

检查注册表日志我在运行terraform:时看到了这一点

`172.*.*.1 - - [04/Apr/2016:18:30:28 +0000] "GET /v2/ubuntu/_ping HTTP/1.1" 404 19 "" "go-dockerclient"`

使用CURL手动尝试了同样的操作,并查看了API文档,但在任何地方都找不到正在实现的_ping,所以在这一点上,我只想找到一种绕过此检查的方法有办法吗

到目前为止,我还没有设置身份验证,所以这个(我相信)还没有身份验证BS。

docker提供程序中的docker主机指向docker守护进程,而不是docker注册表。

terraform内部使用的go-dockerclient正在命中Docker远程API的这个端点-https://docs.docker.com/engine/reference/api/docker_remote_api_v1.20/#ping-docker服务器

要从您的注册表中提取,您必须执行以下操作:

resource "docker_container" "test" {
    image = "docker.localhost.com:5000/org/some-image:latest"
    name = "test"
}

最新更新