forked from pachyderm/pachyderm
/
container.go
56 lines (44 loc) · 1.14 KB
/
container.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
Package container provides functionality to interact with containers.
*/
package container
import (
"io"
"github.com/fsouza/go-dockerclient"
)
type BuildOptions struct {
Dockerfile string
OutputStream io.Writer
}
type PullOptions struct {
NoPullIfLocal bool
OutputStream io.Writer
}
type CreateOptions struct {
Binds []string
HasCommand bool
Shell string
}
type StartOptions struct {
Commands []string
}
type LogsOptions struct {
Stdout io.Writer
Stderr io.Writer
}
type WaitOptions struct{}
type KillOptions struct{}
type RemoveOptions struct{}
type Client interface {
Build(imageName string, contextDir string, options BuildOptions) error
Pull(imageName string, options PullOptions) error
Create(imageName string, options CreateOptions) (string, error)
Start(containerID string, options StartOptions) error
Logs(containerID string, options LogsOptions) error
Wait(containerID string, options WaitOptions) error
Kill(containerID string, options KillOptions) error
Remove(containerID string, options RemoveOptions) error
}
func NewDockerClient(dockerClient *docker.Client) Client {
return newDockerClient(dockerClient)
}