我试图使用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。
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"
}