Skip to content

mpass99/go-dockerclient

This branch is 38 commits behind fsouza/go-dockerclient:main.

Folders and files

NameName
Last commit message
Last commit date
Jul 31, 2024
Feb 7, 2024
Sep 18, 2019
Sep 17, 2019
Feb 17, 2022
Jun 19, 2020
Jan 25, 2022
Feb 4, 2022
May 28, 2022
Oct 14, 2022
Apr 26, 2022
Apr 26, 2022
Oct 22, 2016
Jun 14, 2019
Aug 8, 2023
Feb 7, 2024
Jan 12, 2023
Sep 2, 2022
Sep 2, 2022
Dec 29, 2020
Apr 10, 2019
Mar 14, 2024
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Oct 29, 2020
Jun 2, 2020
Oct 29, 2020
Apr 26, 2022
Oct 29, 2020
Jun 2, 2020
Oct 6, 2023
Oct 6, 2023
Jun 2, 2020
Jun 2, 2020
Dec 29, 2020
Nov 16, 2020
Oct 29, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Oct 29, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Oct 29, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Aug 14, 2022
Jun 2, 2020
Dec 29, 2020
Apr 26, 2022
Jun 2, 2022
Jun 2, 2022
Dec 29, 2020
Jun 2, 2020
Jun 2, 2020
Oct 29, 2020
Jun 2, 2020
Sep 2, 2022
Oct 29, 2020
Jun 2, 2020
Jun 2, 2020
Jun 2, 2020
Dec 29, 2020
Jun 2, 2020
Sep 16, 2019
Jan 10, 2019
Jan 12, 2023
Feb 7, 2024
Aug 19, 2022
Apr 26, 2022
Apr 10, 2019
Mar 4, 2021
Apr 1, 2020
Jul 28, 2024
Jul 28, 2024
Apr 1, 2020
Jul 17, 2024
Apr 26, 2022
Sep 2, 2022
Sep 2, 2022
Sep 2, 2022
Aug 14, 2022
Sep 16, 2019
Mar 9, 2023
Oct 29, 2020
Apr 26, 2022
Jul 9, 2020
Oct 2, 2018
Apr 27, 2014
Oct 29, 2020
Oct 29, 2020
Apr 1, 2020
Oct 29, 2020
Apr 1, 2020
Oct 29, 2020
Apr 1, 2020
Oct 29, 2020
Oct 29, 2020
Oct 29, 2020
Apr 1, 2020
May 5, 2020
Mar 24, 2022
Sep 18, 2018
Feb 3, 2023
Aug 14, 2022
Jan 12, 2023
Oct 29, 2020

Repository files navigation

go-dockerclient

Build Status GoDoc

This package presents a client for the Docker remote API. It also provides support for the extensions in the Swarm API.

This package also provides support for docker's network API, which is a simple passthrough to the libnetwork remote API.

For more details, check the remote API documentation.

Difference between go-dockerclient and the official SDK

Link for the official SDK: https://docs.docker.com/develop/sdk/

go-dockerclient was created before Docker had an official Go SDK and is still maintained and active because it's still used out there. New features in the Docker API do not get automatically implemented here: it's based on demand, if someone wants it, they can file an issue or a PR and the feature may get implemented/merged.

For new projects, using the official SDK is probably more appropriate as go-dockerclient lags behind the official SDK.

Example

package main

import (
	"fmt"

	docker "github.com/fsouza/go-dockerclient"
)

func main() {
	client, err := docker.NewClientFromEnv()
	if err != nil {
		panic(err)
	}
	imgs, err := client.ListImages(docker.ListImagesOptions{All: false})
	if err != nil {
		panic(err)
	}
	for _, img := range imgs {
		fmt.Println("ID: ", img.ID)
		fmt.Println("RepoTags: ", img.RepoTags)
		fmt.Println("Created: ", img.Created)
		fmt.Println("Size: ", img.Size)
		fmt.Println("VirtualSize: ", img.VirtualSize)
		fmt.Println("ParentId: ", img.ParentID)
	}
}

Using with TLS

In order to instantiate the client for a TLS-enabled daemon, you should use NewTLSClient, passing the endpoint and path for key and certificates as parameters.

package main

import (
	"fmt"

	docker "github.com/fsouza/go-dockerclient"
)

func main() {
	const endpoint = "tcp://[ip]:[port]"
	path := os.Getenv("DOCKER_CERT_PATH")
	ca := fmt.Sprintf("%s/ca.pem", path)
	cert := fmt.Sprintf("%s/cert.pem", path)
	key := fmt.Sprintf("%s/key.pem", path)
	client, _ := docker.NewTLSClient(endpoint, cert, key, ca)
	// use client
}

If using docker-machine, or another application that exports environment variables DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKER_CERT_PATH, DOCKER_API_VERSION, you can use NewClientFromEnv.

package main

import (
	"fmt"

	docker "github.com/fsouza/go-dockerclient"
)

func main() {
	client, err := docker.NewClientFromEnv()
	if err != nil {
		// handle err
	}
	// use client
}

See the documentation for more details.

Developing

All development commands can be seen in the Makefile.

Committed code must pass:

Running make test will run all checks, as well as install any required dependencies.

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.9%
  • Other 0.1%