使用 Docker SDK 从文件加载图像

我使用 ImageLoad 函数来加载图像:


    file, err := os.OpenFile(fileName, os.O_RDONLY, 0666)

    if err != nil {

        log.Debugf("Error loading image %s, %s", fileName, err)

    } else {

        defer file.Close()

        resp, err := client.api.ImageLoad(ctx, file, false)

        if err != nil {

            log.Debugf("Error loading image %s, %s", fileName, err)

        }

        if resp.Body == nil {

            err = errors.New("Error loading image")

        } else {

            defer resp.Body.Close()

        }

    }

但是如果我加载一个不是图像的文件,我没有错误。如果我使用控制台,它会按预期工作:


$ docker load -i s.tar

open /var/lib/docker/tmp/docker-import-075289246/repositories: no such file or directory

那么,为什么我在 SDK 的情况下没有错误?


弑天下
浏览 129回答 1
1回答

aluckdog

我为我添加了工作示例:package mainimport (    "bytes"    "fmt"    "io/ioutil"    "log"    "github.com/docker/docker/client"    "golang.org/x/net/context")func main() {    cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())    if err != nil {        panic(err)    }    input := bytes.NewReader([]byte("dummy content\n"))    imageLoadResponse, err := cli.ImageLoad(context.Background(), input, true)    if err != nil {        log.Fatal(err)    }    body, err := ioutil.ReadAll(imageLoadResponse.Body)    fmt.Println(string(body))}//Output:// {"errorDetail":{"message":"Error processing tar file(exit status 1): unexpected EOF"},"error":"Error processing tar file(exit status 1): unexpected EOF"}您还可以查看docker load 命令的方式
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go