Signed-off-by: Tibor Vass <tibor@docker.com>
| ... | ... |
@@ -11,7 +11,6 @@ import ( |
| 11 | 11 |
|
| 12 | 12 |
"github.com/docker/docker/api/types" |
| 13 | 13 |
"github.com/docker/docker/daemon" |
| 14 |
- "github.com/docker/docker/image" |
|
| 15 | 14 |
"github.com/docker/docker/runconfig" |
| 16 | 15 |
) |
| 17 | 16 |
|
| ... | ... |
@@ -112,9 +111,9 @@ type Backend interface {
|
| 112 | 112 |
// TODO: use digest reference instead of name |
| 113 | 113 |
|
| 114 | 114 |
// GetImage looks up a Docker image referenced by `name`. |
| 115 |
- GetImage(name string) (*image.Image, error) |
|
| 115 |
+ GetImage(name string) (Image, error) |
|
| 116 | 116 |
// Pull tells Docker to pull image referenced by `name`. |
| 117 |
- Pull(name string) (*image.Image, error) |
|
| 117 |
+ Pull(name string) (Image, error) |
|
| 118 | 118 |
// ContainerWsAttachWithLogs attaches to container. |
| 119 | 119 |
ContainerWsAttachWithLogs(name string, cfg *daemon.ContainerWsAttachWithLogsConfig) error |
| 120 | 120 |
// ContainerCreate creates a new Docker container and returns potential warnings |
| ... | ... |
@@ -18,8 +18,8 @@ import ( |
| 18 | 18 |
"strings" |
| 19 | 19 |
|
| 20 | 20 |
"github.com/Sirupsen/logrus" |
| 21 |
+ "github.com/docker/docker/builder" |
|
| 21 | 22 |
derr "github.com/docker/docker/errors" |
| 22 |
- "github.com/docker/docker/image" |
|
| 23 | 23 |
flag "github.com/docker/docker/pkg/mflag" |
| 24 | 24 |
"github.com/docker/docker/pkg/nat" |
| 25 | 25 |
"github.com/docker/docker/pkg/signal" |
| ... | ... |
@@ -210,7 +210,7 @@ func from(b *Builder, args []string, attributes map[string]bool, original string |
| 210 | 210 |
} |
| 211 | 211 |
|
| 212 | 212 |
var ( |
| 213 |
- image *image.Image |
|
| 213 |
+ image builder.Image |
|
| 214 | 214 |
err error |
| 215 | 215 |
) |
| 216 | 216 |
// TODO: don't use `name`, instead resolve it to a digest |
| ... | ... |
@@ -24,7 +24,6 @@ import ( |
| 24 | 24 |
"github.com/docker/docker/builder" |
| 25 | 25 |
"github.com/docker/docker/builder/dockerfile/parser" |
| 26 | 26 |
"github.com/docker/docker/daemon" |
| 27 |
- "github.com/docker/docker/image" |
|
| 28 | 27 |
"github.com/docker/docker/pkg/archive" |
| 29 | 28 |
"github.com/docker/docker/pkg/httputils" |
| 30 | 29 |
"github.com/docker/docker/pkg/ioutils" |
| ... | ... |
@@ -403,11 +402,11 @@ func containsWildcards(name string) bool {
|
| 403 | 403 |
return false |
| 404 | 404 |
} |
| 405 | 405 |
|
| 406 |
-func (b *Builder) processImageFrom(img *image.Image) error {
|
|
| 407 |
- b.image = img.ID().String() |
|
| 406 |
+func (b *Builder) processImageFrom(img builder.Image) error {
|
|
| 407 |
+ b.image = img.ID() |
|
| 408 | 408 |
|
| 409 | 409 |
if img.Config != nil {
|
| 410 |
- b.runConfig = img.Config |
|
| 410 |
+ b.runConfig = img.Config() |
|
| 411 | 411 |
} |
| 412 | 412 |
|
| 413 | 413 |
// The default path will be blank on Windows (set by HCS) |
| ... | ... |
@@ -36,7 +36,7 @@ type Docker struct {
|
| 36 | 36 |
var _ builder.Backend = Docker{}
|
| 37 | 37 |
|
| 38 | 38 |
// Pull tells Docker to pull image referenced by `name`. |
| 39 |
-func (d Docker) Pull(name string) (*image.Image, error) {
|
|
| 39 |
+func (d Docker) Pull(name string) (builder.Image, error) {
|
|
| 40 | 40 |
ref, err := reference.ParseNamed(name) |
| 41 | 41 |
if err != nil {
|
| 42 | 42 |
return nil, err |
| ... | ... |
@@ -69,8 +69,16 @@ func (d Docker) Pull(name string) (*image.Image, error) {
|
| 69 | 69 |
if err := d.Daemon.PullImage(ref, nil, pullRegistryAuth, ioutils.NopWriteCloser(d.OutOld)); err != nil {
|
| 70 | 70 |
return nil, err |
| 71 | 71 |
} |
| 72 |
+ return d.GetImage(name) |
|
| 73 |
+} |
|
| 72 | 74 |
|
| 73 |
- return d.Daemon.GetImage(name) |
|
| 75 |
+// GetImage looks up a Docker image referenced by `name`. |
|
| 76 |
+func (d Docker) GetImage(name string) (builder.Image, error) {
|
|
| 77 |
+ img, err := d.Daemon.GetImage(name) |
|
| 78 |
+ if err != nil {
|
|
| 79 |
+ return nil, err |
|
| 80 |
+ } |
|
| 81 |
+ return imgWrap{img}, nil
|
|
| 74 | 82 |
} |
| 75 | 83 |
|
| 76 | 84 |
// ContainerUpdateCmd updates Path and Args for the container with ID cID. |
| ... | ... |
@@ -84,18 +92,6 @@ func (d Docker) ContainerUpdateCmd(cID string, cmd []string) error {
|
| 84 | 84 |
return nil |
| 85 | 85 |
} |
| 86 | 86 |
|
| 87 |
-// Retain retains an image avoiding it to be removed or overwritten until a corresponding Release() call. |
|
| 88 |
-func (d Docker) Retain(sessionID, imgID string) {
|
|
| 89 |
- // FIXME: This will be solved with tags in client-side builder |
|
| 90 |
- //d.Daemon.Graph().Retain(sessionID, imgID) |
|
| 91 |
-} |
|
| 92 |
- |
|
| 93 |
-// Release releases a list of images that were retained for the time of a build. |
|
| 94 |
-func (d Docker) Release(sessionID string, activeImages []string) {
|
|
| 95 |
- // FIXME: This will be solved with tags in client-side builder |
|
| 96 |
- //d.Daemon.Graph().Release(sessionID, activeImages...) |
|
| 97 |
-} |
|
| 98 |
- |
|
| 99 | 87 |
// BuilderCopy copies/extracts a source FileInfo to a destination path inside a container |
| 100 | 88 |
// specified by a container object. |
| 101 | 89 |
// TODO: make sure callers don't unnecessarily convert destPath with filepath.FromSlash (Copy does it already). |
| 102 | 90 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,18 @@ |
| 0 |
+package daemonbuilder |
|
| 1 |
+ |
|
| 2 |
+import ( |
|
| 3 |
+ "github.com/docker/docker/image" |
|
| 4 |
+ "github.com/docker/docker/runconfig" |
|
| 5 |
+) |
|
| 6 |
+ |
|
| 7 |
+type imgWrap struct {
|
|
| 8 |
+ inner *image.Image |
|
| 9 |
+} |
|
| 10 |
+ |
|
| 11 |
+func (img imgWrap) ID() string {
|
|
| 12 |
+ return string(img.inner.ID()) |
|
| 13 |
+} |
|
| 14 |
+ |
|
| 15 |
+func (img imgWrap) Config() *runconfig.Config {
|
|
| 16 |
+ return img.inner.Config |
|
| 17 |
+} |