Создание образа Docker из кода Go

Я пытаюсь создать образ Docker с использованием библиотек Docker API и Docker Go (https://github.com/docker/engine-api/). Пример кода:

package main
import (
    "fmt"
    "github.com/docker/engine-api/client"
    "github.com/docker/engine-api/types"
    "golang.org/x/net/context"
)
func main() {
    defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"}
    cli, err := client.NewClient("unix:///var/run/docker.sock", "v1.22", nil, defaultHeaders)
    if err != nil {
        panic(err)
    }
    fmt.Print(cli.ClientVersion())
    opt := types.ImageBuildOptions{
        CPUSetCPUs:   "2",
        CPUSetMems:   "12",
        CPUShares:    20,
        CPUQuota:     10,
        CPUPeriod:    30,
        Memory:       256,
        MemorySwap:   512,
        ShmSize:      10,
        CgroupParent: "cgroup_parent",
        Dockerfile:   "dockerSrc/docker-debug-container/Dockerfile",
    }
    _, err = cli.ImageBuild(context.Background(), nil, opt)
    if err == nil || err.Error() != "Error response from daemon: Server error" {
        fmt.Printf("expected a Server Error, got %v", err)
    }
}

Ошибка всегда одна и та же:

Ответ об ошибке от демона: не удается найти указанный файл Docker: dockerSrc / docker-debug-container / Dockerfile

или же

Ответ об ошибке от демона: не удается найти указанный файл Docker: файл Dockerfile

Вещи, которые я проверил:

Папка существует в пути сборкиЯ пробовал как относительный, так и абсолютный путьТам нет мягких ссылок в путиЯ попробовал ту же папку для двоичного файла иDockerfiledocker build <path> работаети куча других вещей

Мой другой вариант был использоватьRemoteContext похоже, это работает, но только для полностью автономных dockerfiles, а не для тех, которые имеют «локальное присутствие файла».

Обновить: Пробовал проходитьtar в качестве буфера, но получил тот же результат со следующим:

  dockerBuildContext, err := os.Open("<path to>/docker-debug-    container/docker-debug-container.tar")
  defer dockerBuildContext.Close()

    opt := types.ImageBuildOptions{
        Context:      dockerBuildContext,
        CPUSetCPUs:   "2",
        CPUSetMems:   "12",
        CPUShares:    20,
        CPUQuota:     10,
        CPUPeriod:    30,
        Memory:       256,
        MemorySwap:   512,
        ShmSize:      10,
        CgroupParent: "cgroup_parent",
        //  Dockerfile:   "Dockerfile",
    }

    _, err = cli.ImageBuild(context.Background(), nil, opt)

Ответы на вопрос(5)

Ваш ответ на вопрос