Documentación!
Cuando decida escribir su propia bicicleta conectándose desde el concentrador de Docker o desde el registro para actualizar / iniciar automáticamente los contenedores en el servidor, es posible que necesite Docker Cli, que ayudará a administrar el demonio Docker en su sistema.

Para trabajar, necesitará la versión Go no inferior a 1.9.4
Si aún no ha cambiado a módulos, instale Cli con el siguiente comando:
go get github.com/docker/docker/client
Lanzamiento de contenedores
El siguiente ejemplo muestra cómo iniciar un contenedor con la API de Docker. En la línea de comando usaría el docker run
, pero podemos hacer frente fácilmente a esta tarea en nuestro servicio.
Este ejemplo es equivalente a ejecutar el docker run alpine echo hello world
package main { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
Obtener una lista de contenedores en ejecución
Este ejemplo es equivalente a ejecutar el docker ps
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }
Detenga todos los contenedores en funcionamiento.
Una vez que haya aprendido a crear y ejecutar contenedores, es hora de aprender a administrarlos. El siguiente ejemplo detendrá todos los contenedores en ejecución.
¡No ejecute este código en un servidor de producción!
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
Registrar un solo contenedor
Puedes trabajar con contenedores individuales. El siguiente ejemplo muestra los registros del contenedor con el identificador especificado. Antes de comenzar, debe cambiar el identificador del contenedor cuyos registros desea recibir.
package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) } options := types.ContainerLogsOptions{ShowStdout: true}
Obteniendo la lista de imágenes
Este ejemplo es equivalente a ejecutar docker image ls
package main import ( "context" "fmt" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { cli, err := client.NewEnvClient() if err != nil { panic(err) }
Tirar
Este ejemplo es equivalente a ejecutar el docker pull
package main import ( "context" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
Descargar imagen con autenticación de usuario
Este ejemplo es equivalente a ejecutar el docker pull
con autenticación.
Los datos de autenticación se envían en texto claro. El registro oficial de docker usa HTTPS,
Los registros privados también deben configurarse para transmitir datos mediante HTTPS.
package main import ( "context" "encoding/base64" "encoding/json" "io" "os" "github.com/docker/docker/api/types" "github.com/docker/docker/client" ) func main() { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }