forked from pachyderm/pachyderm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
container.go
66 lines (54 loc) · 1.68 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
57
58
59
60
61
62
63
64
65
66
/*
Package container provides functionality to interact with containers.
*/
package container
import (
"io"
"github.com/fsouza/go-dockerclient"
)
// BuildOptions represents container build options.
type BuildOptions struct {
Dockerfile string
OutputStream io.Writer
}
// PullOptions represents container pull options.
type PullOptions struct {
NoPullIfLocal bool
OutputStream io.Writer
}
// CreateOptions represents container create options.
type CreateOptions struct {
Binds []string
HasCommand bool
Shell string
}
// StartOptions represents container start options.
type StartOptions struct {
Commands []string
}
// LogsOptions represents container log options.
type LogsOptions struct {
Stdout io.Writer
Stderr io.Writer
}
// WaitOptions represents container wait options.
type WaitOptions struct{}
// KillOptions represents container kill options.
type KillOptions struct{}
// RemoveOptions represents container remove options.
type RemoveOptions struct{}
// Client defines Pachyderm's interface to container-engines such as docker.
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
}
// NewDockerClient create a Client from given docker.Client.
func NewDockerClient(dockerClient *docker.Client) Client {
return newDockerClient(dockerClient)
}