Files
moby/client
Sebastiaan van Stijn e6f41e22a7 client: Client.doRequest: fix closing filehandle and reversed errors
commit 1a5dafb31e improved the error messages
produced by adding a check if the client is using as an elevated user. For
this, it attempts to open `\\.\PHYSICALDRIVE0`.

However, it looks like closing the file landed in the wrong branch of the
condition, so the file-handle would not be closed when the os.Open succeeded.

Looking further into this check, it appears the conditions were reversed;
if the check _fails_, it means the user is not running with elevated
permissions, but the check would use elevatedErr == nil.

Fix both by changing the condition to `elevatedErr != nil`.

While at it, also changing the string to use a string-literal, to reduce
the amount of escaping needed.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-06-03 10:52:15 +02:00
..
2023-09-07 18:38:19 +00:00
2023-05-19 20:38:51 +02:00
2022-09-28 01:58:52 +02:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2024-03-22 13:06:43 +01:00
2022-07-29 23:05:15 +02:00
2023-06-29 00:25:21 +02:00
2023-09-07 18:38:19 +00:00
2024-02-23 14:25:52 +01:00
2024-03-22 13:06:43 +01:00
2023-11-14 12:27:35 +01:00
2018-02-05 16:51:57 -05:00

Go client for the Docker Engine API

The docker command uses this package to communicate with the daemon. It can also be used by your own Go applications to do anything the command-line interface does running containers, pulling images, managing swarms, etc.

For example, to list all containers (the equivalent of docker ps --all):

package main

import (
	"context"
	"fmt"

	"github.com/docker/docker/api/types/container"
	"github.com/docker/docker/client"
)

func main() {
	apiClient, err := client.NewClientWithOpts(client.FromEnv)
	if err != nil {
		panic(err)
	}
	defer apiClient.Close()

	containers, err := apiClient.ContainerList(context.Background(), container.ListOptions{All: true})
	if err != nil {
		panic(err)
	}

	for _, ctr := range containers {
		fmt.Printf("%s %s (status: %s)\n", ctr.ID, ctr.Image, ctr.Status)
	}
}

Full documentation is available on pkg.go.dev.