Running commands with the docker binary (CLI)
There's a universe.dagger.io/docker/cli
package that allows you to run docker commands against a local or remote docker engine. Here's a few examples.
Local daemon
package main
import (
"dagger.io/dagger"
"universe.dagger.io/docker/cli"
)
dagger.#Plan & {
client: network: "unix:///var/run/docker.sock": connect: dagger.#Socket
actions: run: cli.#Run & {
host: client.network."unix:///var/run/docker.sock".connect
command: name: "info"
}
}
Remote daemon, via SSH
package main
import (
"dagger.io/dagger"
"universe.dagger.io/docker/cli"
)
dagger.#Plan & {
client: filesystem: {
"~/.ssh/id_rsa": read: contents: dagger.#Secret
"~/.ssh/known_hosts": read: contents: dagger.#Secret
}
actions: run: cli.#Run & {
host: "ssh://root@93.184.216.34"
ssh: {
key: client.filesystem."~/.ssh/id_rsa".read.contents
knownHosts: client.filesystem."~/.ssh/known_hosts".read.contents
}
command: name: "info"
}
}
Remote daemon, via HTTPS
package main
import (
"dagger.io/dagger"
"universe.dagger.io/docker/cli"
)
dagger.#Plan & {
// Directory with certificates. Needs the following files:
// - ca.pem --> (Certificate authority that signed the registry certificate)
// - cert.pem --> (Client certificate)
// - key.pem --> (Client private key)
client: filesystem: "./certs": read: contents: dagger.#FS
actions: run: cli.#Run & {
host: "tcp://93.184.216.34:2376"
certs: client.filesystem."./certs".read.contents
command: name: "info"
}
}