使用go dockerclient挂起从自定义注册表下载图像
我似乎无法从自定义注册表中提取。我做错了吗?我知道这些图像存在,我可以手动下载它们使用go dockerclient挂起从自定义注册表下载图像,go,docker,docker-registry,Go,Docker,Docker Registry,我似乎无法从自定义注册表中提取。我做错了吗?我知道这些图像存在,我可以手动下载它们 package main import ( "github.com/fsouza/go-dockerclient" log "github.com/Sirupsen/logrus" ) func main() { log.SetFormatter(&log.JSONFormatter{}) log.Infoln("pulling remote images.")
package main
import (
"github.com/fsouza/go-dockerclient"
log "github.com/Sirupsen/logrus"
)
func main() {
log.SetFormatter(&log.JSONFormatter{})
log.Infoln("pulling remote images.")
pull_images()
log.Infoln("done.")
}
var (
gcr = "gcr.io/google_containers/"
fluentd = docker.PullImageOptions{
Repository: "fluentd-elasticsearch",
Registry: gcr,
RawJSONStream: true,
}
local_images = []docker.PullImageOptions{fluentd,{...}} // there is a long list of image, truncated for example.
)
func pull_images() {
// empty config as it is not needed at this point.
auth := docker.AuthConfiguration{}
client, err := docker.NewClientFromEnv()
if err != nil {
log.Fatal(err)
}
for _, image := range local_images {
log.Infof("pulling %s%s", image.Registry, image.Repository)
err = client.PullImage(image, auth)
if err != nil {
log.Warnln(err)
}
}
}
如果我指定
docker.io
注册表并使用Ubuntu映像,它就可以工作,但它不能与Google映像一起工作。我可以使用docker pull-a gcr.io/google_containers/fluentd elasticsearch
手动拉取图像,因此我知道它存在并且可以有效使用。我没有使用docker客户端登录Google注册表,因此我知道允许匿名拉取。存在网络问题,阻止下载。您的示例代码对我有效。Go1.5.1Linux/amd64:你能kill-ABRT
你的程序给我们提供堆栈跟踪吗?(请参阅)@mynameismevin从您的日志中可以看出,它实际上是从注册表中提取的。您确定您已经等待了足够的时间,以便图像有足够的时间下载吗?另外,你能在脚本运行时检查你的网络活动,看看它是否真的在执行拉操作吗?这就解决了问题。结束。