Build Docker Image von Go Code
Ich versuche, ein Docker-Image mit der Docker-API und den Docker Go-Bibliotheken zu erstellen https: //github.com/docker/engine-api). Code-Beispiel:
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)
}
}
Der Fehler ist immer gleich:
Fehlerantwort vom Dämon: Angegebene Docker-Datei kann nicht gefunden werden: dockerSrc / docker-debug-container / Dockerfile
ode
Fehlerantwort vom Dämon: Angegebene Docker-Datei kann nicht gefunden werden: Docker-Datei
Dinge, die ich überprüft habe:
Der Ordner existiert im Erstellungspfad Ich habe versucht, sowohl relative als auch absolute PfadDer Pfad enthält keine Softlinks Ich habe versucht, den gleichen Ordner für Binär undDockerfile
docker build <path>
worksund ein paar andere SachenMeine andere Option war die Verwendung vonRemoteContext
was so aussieht, als würde es funktionieren, aber nur für vollständig in sich geschlossene Dockerdateien und nicht für solche mit "lokaler Dateianwesenheit".
Aktualisieren Versucht vorbeitar
als Puffer, aber mit folgendem Ergebnis:
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)