我使用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的情况下我没有错误?
最佳答案
我为我添加了工作示例:
package main
import (
"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
command
关于docker - 使用Docker SDK从文件加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60277633/