使用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从您的日志中可以看出,它实际上是从注册表中提取的。您确定您已经等待了足够的时间,以便图像有足够的时间下载吗?另外,你能在脚本运行时检查你的网络活动,看看它是否真的在执行拉操作吗?这就解决了问题。结束。