使用go-dockerclient从自定义注册表下载图像会挂起

时间:2015-11-13 15:33:25

标签: 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.")
    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注册表,所以我知道允许匿名拉动。

1 个答案:

答案 0 :(得分:0)

网络问题导致无法下载。