使用gosdk从Dockerfile创建Docker映像,复制失败:stat/var/lib/Docker/tmp/Docker-builder689084003/

使用gosdk从Dockerfile创建Docker映像,复制失败:stat/var/lib/Docker/tmp/Docker-builder689084003/,docker,Docker,我的代码如下: 包干管 import ( "archive/tar" "bytes" "context" "io" "io/ioutil" "log" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli,err:

我的代码如下: 包干管

import (
    "archive/tar"
    "bytes"
    "context"
    "io"
    "io/ioutil"
    "log"
    "os"

    "github.com/docker/docker/api/types"
    "github.com/docker/docker/client"
)

func main() {
    ctx := context.Background()
    cli,err:=client.NewClientWithOpts(client.FromEnv,client.WithAPIVersionNegotiation())
    if err != nil {
        log.Fatal(err, " :unable to init client")
    }

    buf := new(bytes.Buffer)
    tw := tar.NewWriter(buf)
    defer tw.Close()

    dockerFile := "myDockerfile"
    dockerFileReader, err := os.Open("/home/aungkokolin/Projects/Proj/src/Dockerfile")
    if err != nil {
        log.Fatal(err, " :unable to open Dockerfile")
    }
    readDockerFile, err := ioutil.ReadAll(dockerFileReader)
    if err != nil {
        log.Fatal(err, " :unable to read dockerfile")
    }

    tarHeader := &tar.Header{
        Name: dockerFile,
        Size: int64(len(readDockerFile)),
    }
    err = tw.WriteHeader(tarHeader)
    if err != nil {
        log.Fatal(err, " :unable to write tar header")
    }
    _, err = tw.Write(readDockerFile)
    if err != nil {
        log.Fatal(err, " :unable to write tar body")
    }
    dockerFileTarReader := bytes.NewReader(buf.Bytes())

    imageBuildResponse, err := cli.ImageBuild(
        ctx,
        dockerFileTarReader,
        types.ImageBuildOptions{
            Context:    dockerFileTarReader,
            Tags:       []string{"python"},
            Dockerfile: dockerFile,
            Remove:     true})
    if err != nil {
        log.Fatal(err, " :unable to build docker image")
    }
    defer imageBuildResponse.Body.Close()
    _, err = io.Copy(os.Stdout, imageBuildResponse.Body)
    if err != nil {
        log.Fatal(err, " :unable to read image build response")
    }
}
“消息”:“复制失败:stat/var/lib/docker/tmp/docker-builder689084003/python项目tic tac toe:没有这样的文件或目录”},“错误”:“复制失败:stat/var/lib/docker/tmp/docker-builder689084003/python项目tic tac toe:没有这样的文件或目录”}


您是否也可以共享dockerfile(或复制相同问题的简化版本)?属于容器的所有文件都必须添加到tar文件中。因此,您添加了一个docker文件,它引用了其他文件,但您从未将这些其他文件添加到您创建的tar中。