Skip to main content

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"
}
}