Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 2944d6d

Browse files
committed
swap docker client
remove github.com/samalba/dockerclient in favor of github.com/docker/docker/client
1 parent b170508 commit 2944d6d

File tree

485 files changed

+80728
-6182
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

485 files changed

+80728
-6182
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.12.9
1+
FROM golang:1.15
22

33
RUN apt-get update && apt-get install -y --no-install-recommends \
44
openssh-client \

Gopkg.lock

Lines changed: 174 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
version = "1.4.10"
1212

1313
[[constraint]]
14-
branch = "master"
14+
version = "v19.03.13"
1515
name = "github.com/docker/docker"
1616

1717
[[constraint]]
@@ -34,6 +34,10 @@
3434
name = "github.com/intel-go/cpuid"
3535
branch = "master"
3636

37+
[[override]]
38+
name = "github.com/golang/protobuf"
39+
version = "v1.0.0"
40+
3741
[prune]
3842
go-tests = true
3943
unused-packages = true

libmachine/mcndockerclient/docker_client.go

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,75 @@
11
package mcndockerclient
22

33
import (
4+
"context"
45
"fmt"
6+
"io"
7+
"io/ioutil"
58

6-
"github.com/docker/machine/libmachine/cert"
7-
"github.com/samalba/dockerclient"
9+
"github.com/docker/docker/api/types"
10+
"github.com/docker/docker/api/types/container"
11+
"github.com/docker/docker/api/types/strslice"
12+
"github.com/docker/docker/client"
13+
"github.com/docker/go-connections/nat"
814
)
915

1016
// DockerClient creates a docker client for a given host.
11-
func DockerClient(dockerHost DockerHost) (*dockerclient.DockerClient, error) {
17+
func DockerClient(dockerHost DockerHost) (*client.Client, error) {
1218
url, err := dockerHost.URL()
1319
if err != nil {
1420
return nil, err
1521
}
1622

17-
tlsConfig, err := cert.ReadTLSConfig(url, dockerHost.AuthOptions())
18-
if err != nil {
19-
return nil, fmt.Errorf("Unable to read TLS config: %s", err)
20-
}
23+
authOptions := dockerHost.AuthOptions()
24+
return client.NewClientWithOpts(client.WithHost(url), client.WithTLSClientConfig(authOptions.CaCertPath, authOptions.ClientCertPath, authOptions.ClientKeyPath))
25+
}
2126

22-
return dockerclient.NewDockerClient(url, tlsConfig)
27+
// ContainerConfig contains options needed to create and start a container
28+
type ContainerConfig struct {
29+
Image string
30+
Env []string
31+
ExposedPorts map[string]struct{}
32+
Cmd []string
33+
HostConfig *container.HostConfig
2334
}
2435

2536
// CreateContainer creates a docker container.
26-
func CreateContainer(dockerHost DockerHost, config *dockerclient.ContainerConfig, name string) error {
37+
func CreateContainer(ctx context.Context, dockerHost DockerHost, config *ContainerConfig, name string) error {
2738
docker, err := DockerClient(dockerHost)
2839
if err != nil {
2940
return err
3041
}
3142

32-
if err = docker.PullImage(config.Image, nil); err != nil {
43+
rc, err := docker.ImagePull(ctx, config.Image, types.ImagePullOptions{})
44+
if err != nil {
3345
return fmt.Errorf("Unable to pull image: %s", err)
3446
}
3547

36-
var authConfig *dockerclient.AuthConfig
37-
containerID, err := docker.CreateContainer(config, name, authConfig)
48+
_, err = io.Copy(ioutil.Discard, rc)
49+
if err != nil {
50+
return fmt.Errorf("Unable to read image pull status: %s", err)
51+
}
52+
53+
err = rc.Close()
54+
if err != nil {
55+
return fmt.Errorf("Unable to close image pull status: %s", err)
56+
}
57+
58+
containerConfig := &container.Config{
59+
Env: config.Env,
60+
Cmd: strslice.StrSlice(config.Cmd),
61+
ExposedPorts: map[nat.Port]struct{}{},
62+
}
63+
for k := range config.ExposedPorts {
64+
containerConfig.ExposedPorts[nat.Port(k)] = struct{}{}
65+
}
66+
67+
createdContainer, err := docker.ContainerCreate(ctx, containerConfig, config.HostConfig, nil, name)
3868
if err != nil {
3969
return fmt.Errorf("Error while creating container: %s", err)
4070
}
4171

42-
if err = docker.StartContainer(containerID, &config.HostConfig); err != nil {
72+
if err = docker.ContainerStart(ctx, createdContainer.ID, types.ContainerStartOptions{}); err != nil {
4373
return fmt.Errorf("Error while starting container: %s", err)
4474
}
4575

0 commit comments

Comments
 (0)