Documentação!
Quando vocĂȘ decide escrever sua prĂłpria bicicleta para capturar ganchos no hub do docker ou no registro para atualizar / iniciar automaticamente contĂȘineres no servidor, pode ser necessĂĄrio o Docker Cli, que ajudarĂĄ a gerenciar o daemon do Docker no seu sistema.

Para funcionar, vocĂȘ precisarĂĄ da versĂŁo Go nĂŁo inferior a 1.9.4
Se vocĂȘ ainda nĂŁo mudou para os mĂłdulos, instale o Cli com o seguinte comando:
go get github.com/docker/docker/client
Lançamento de contĂȘiner
O exemplo a seguir mostra como iniciar um contĂȘiner usando a API do Docker. Na linha de comando, vocĂȘ usaria o docker run
, mas podemos facilmente lidar com essa tarefa em nosso serviço.
Este exemplo é equivalente à execução do comando docker run alpine echo hello world
package main { ctx := context.Background() cli, err := client.NewEnvClient() if err != nil { panic(err) }
Obtendo uma lista de contĂȘineres em execução
Este exemplo é equivalente à execução do 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) }
Pare todos os contĂȘineres em execução
Depois de aprender como criar e executar contĂȘineres, Ă© hora de aprender a gerenciĂĄ-los. O exemplo a seguir irĂĄ parar todos os contĂȘineres em execução.
Não execute esse código em um servidor de produção!
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) }
Registrando um Ănico ContĂȘiner
VocĂȘ pode trabalhar com contĂȘineres individuais. O exemplo a seguir exibe os logs do contĂȘiner com o identificador especificado. Antes de iniciar, vocĂȘ precisa alterar o identificador do contĂȘiner cujos logs vocĂȘ deseja receber.
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}
Obtendo a lista de imagens
Este exemplo é equivalente à execução da 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) }
Pull
Este exemplo é equivalente à execução do docker pull
do 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) }
Baixar imagem com autenticação do usuårio
Este exemplo é equivalente à execução do docker pull
do docker pull
com autenticação.
Os dados de autenticação são enviados em texto não criptografado. O registro oficial do docker usa HTTPS,
Os registros particulares também devem ser configurados para transmitir dados usando 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) }