This adds support to loading artifacts (e.g. docker.#Build,
os.#Container, ...) into any arbitrary docker engine (through a
dagger.#Stream for UNIX sockets or SSH for a remote engine)
Implementation:
- Add op.#SaveImage which serializes an artifact into an arbitrary path
(docker tarball format)
- Add docker.#Load which uses op.#SaveImage to serialize to disk and
executes `docker load` to load it back
Caveats: Because we're doing this in userspace rather than letting
dagger itself load the image, the performance is pretty bad.
The buildkit API is meant for streaming (get a stream of a docker image
pipe it into docker load). Because of userspace, we have to load the
entire docker image into memory, then serialize it in a single WriteFile
LLB operation.
Example:
```cue
package main
import (
"alpha.dagger.io/dagger"
"alpha.dagger.io/docker"
)
source: dagger.#Input & dagger.#Artifact
dockersocket: dagger.#Input & dagger.#Stream
build: docker.#Build & {
"source": source
}
load: docker.#Load & {
source: build
tag: "testimage"
socket: dockersocket
}
```
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
1.8 KiB
1.8 KiB
sidebar_label
| sidebar_label |
|---|
| op |
alpha.dagger.io/dagger/op
op: low-level operations for Dagger processing pipelines
import "alpha.dagger.io/dagger/op"
op.#Copy
op.#Copy Inputs
No input.
op.#Copy Outputs
No output.
op.#DockerBuild
op.#DockerBuild Inputs
No input.
op.#DockerBuild Outputs
No output.
op.#DockerLogin
op.#DockerLogin Inputs
No input.
op.#DockerLogin Outputs
No output.
op.#Exec
op.#Exec Inputs
No input.
op.#Exec Outputs
No output.
op.#Export
Export a value from fs state to cue
op.#Export Inputs
No input.
op.#Export Outputs
No output.
op.#FetchContainer
op.#FetchContainer Inputs
No input.
op.#FetchContainer Outputs
No output.
op.#FetchGit
op.#FetchGit Inputs
No input.
op.#FetchGit Outputs
No output.
op.#FetchHTTP
op.#FetchHTTP Inputs
No input.
op.#FetchHTTP Outputs
No output.
op.#Load
op.#Load Inputs
No input.
op.#Load Outputs
No output.
op.#Local
op.#Local Inputs
No input.
op.#Local Outputs
No output.
op.#Mkdir
op.#Mkdir Inputs
No input.
op.#Mkdir Outputs
No output.
op.#Op
One operation in a pipeline
op.#Op Inputs
No input.
op.#Op Outputs
No output.
op.#PushContainer
op.#PushContainer Inputs
No input.
op.#PushContainer Outputs
No output.
op.#SaveImage
op.#SaveImage Inputs
No input.
op.#SaveImage Outputs
No output.
op.#Subdir
op.#Subdir Inputs
No input.
op.#Subdir Outputs
No output.
op.#Workdir
op.#Workdir Inputs
No input.
op.#Workdir Outputs
No output.
op.#WriteFile
op.#WriteFile Inputs
No input.
op.#WriteFile Outputs
No output.