watchtower/Godeps/_workspace/src/github.com/samalba/dockerclient
2015-07-16 19:04:39 +00:00
..
examples Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
mockclient Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
.gitignore Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
auth.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
auth_test.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
dockerclient.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
dockerclient_test.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
engine_mock_test.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
example_responses.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
interface.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
LICENSE Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
README.md Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
types.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00
utils.go Set-up CircleCI builds 2015-07-16 19:04:39 +00:00

Docker client library in Go

GoDoc

Well maintained docker client library.

How to use it?

Here is an example showing how to use it:

package main

import (
	"github.com/samalba/dockerclient"
	"log"
	"time"
)

// Callback used to listen to Docker's events
func eventCallback(event *dockerclient.Event, ec chan error, args ...interface{}) {
	log.Printf("Received event: %#v\n", *event)
}

func main() {
	// Init the client
	docker, _ := dockerclient.NewDockerClient("unix:///var/run/docker.sock", nil)

	// Get only running containers
	containers, err := docker.ListContainers(false, false, "")
	if err != nil {
		log.Fatal(err)
	}
	for _, c := range containers {
		log.Println(c.Id, c.Names)
	}

	// Inspect the first container returned
	if len(containers) > 0 {
		id := containers[0].Id
		info, _ := docker.InspectContainer(id)
		log.Println(info)
	}

	// Create a container
	containerConfig := &dockerclient.ContainerConfig{
		Image: "ubuntu:14.04",
		Cmd:   []string{"bash"},
		AttachStdin: true,
		Tty:   true}
	containerId, err := docker.CreateContainer(containerConfig, "foobar")
	if err != nil {
		log.Fatal(err)
	}

	// Start the container
	hostConfig := &dockerclient.HostConfig{}
	err = docker.StartContainer(containerId, hostConfig)
	if err != nil {
		log.Fatal(err)
	}

	// Stop the container (with 5 seconds timeout)
	docker.StopContainer(containerId, 5)

	// Listen to events
	docker.StartMonitorEvents(eventCallback, nil)

	// Hold the execution to look at the events coming
	time.Sleep(3600 * time.Second)
}

Maintainers

List of people you can ping for feedback on Pull Requests or any questions.