Support loading artifacts into a Docker Engine
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>
This commit is contained in:
@@ -144,6 +144,16 @@ _No input._
|
||||
|
||||
_No output._
|
||||
|
||||
## op.#SaveImage
|
||||
|
||||
### op.#SaveImage Inputs
|
||||
|
||||
_No input._
|
||||
|
||||
### op.#SaveImage Outputs
|
||||
|
||||
_No output._
|
||||
|
||||
## op.#Subdir
|
||||
|
||||
### op.#Subdir Inputs
|
||||
|
@@ -40,6 +40,26 @@ A container image that can run any docker command
|
||||
|
||||
_No output._
|
||||
|
||||
## docker.#Load
|
||||
|
||||
Load a docker image into a docker engine
|
||||
|
||||
### docker.#Load Inputs
|
||||
|
||||
| Name | Type | Description |
|
||||
| ------------- |:-------------: |:-------------: |
|
||||
|*tag* | `string` |Name and optionally a tag in the 'name:tag' format |
|
||||
|*source* | `dagger.#Artifact` |Image source |
|
||||
|*load.command* | `"docker load -i /src/image.tar"` |Command to execute |
|
||||
|*load.registries* | `[]` |Image registries |
|
||||
|
||||
### docker.#Load Outputs
|
||||
|
||||
| Name | Type | Description |
|
||||
| ------------- |:-------------: |:-------------: |
|
||||
|*ref* | `string` |Image ref |
|
||||
|*digest* | `string` |Image digest |
|
||||
|
||||
## docker.#Pull
|
||||
|
||||
Pull a docker container
|
||||
|
Reference in New Issue
Block a user