package client import ( "net/http" "os" "github.com/docker/docker/client" "github.com/sirupsen/logrus" ) func NewClientWithContext(contextName string) (*client.Client, error) { context, err := GetContext(contextName) if err != nil { return nil, err } ctxEndpoint, err := GetContextEndpoint(context) if err != nil { return nil, err } helper := newConnectionHelper(ctxEndpoint) httpClient := &http.Client{ // No tls // No proxy Transport: &http.Transport{ DialContext: helper.Dialer, }, } var clientOpts []client.Opt clientOpts = append(clientOpts, client.WithHTTPClient(httpClient), client.WithHost(helper.Host), client.WithDialContext(helper.Dialer), ) // FIXME: Maybe don't have this variable here and load it beforehand version := os.Getenv("DOCKER_API_VERSION") if version != "" { clientOpts = append(clientOpts, client.WithVersion(version)) } else { clientOpts = append(clientOpts, client.WithAPIVersionNegotiation()) } cl, err := client.NewClientWithOpts(clientOpts...) if err != nil { logrus.Fatalf("unable to create Docker client: %s", err) } return cl, nil }