mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
executor: Don't repull image if pinned by digest
If the image reference in the spec uses a digest, and an image with that digest already exists locally, avoid an unnecessary repull. Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
This commit is contained in:
parent
2161f35672
commit
f69e5c18ac
2 changed files with 14 additions and 0 deletions
|
@ -48,4 +48,5 @@ type Backend interface {
|
|||
UpdateAttachment(string, string, string, *network.NetworkingConfig) error
|
||||
WaitForDetachment(context.Context, string, string, string, string) error
|
||||
GetRepository(context.Context, reference.NamedTagged, *types.AuthConfig) (distribution.Repository, bool, error)
|
||||
LookupImage(name string) (*types.ImageInspect, error)
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/docker/docker/api/types/events"
|
||||
"github.com/docker/docker/api/types/versions"
|
||||
executorpkg "github.com/docker/docker/daemon/cluster/executor"
|
||||
"github.com/docker/docker/reference"
|
||||
"github.com/docker/libnetwork"
|
||||
"github.com/docker/swarmkit/agent/exec"
|
||||
"github.com/docker/swarmkit/api"
|
||||
|
@ -49,6 +50,18 @@ func newContainerAdapter(b executorpkg.Backend, task *api.Task, secrets exec.Sec
|
|||
func (c *containerAdapter) pullImage(ctx context.Context) error {
|
||||
spec := c.container.spec()
|
||||
|
||||
// Skip pulling if the image is referenced by digest and already
|
||||
// exists locally.
|
||||
named, err := reference.ParseNamed(spec.Image)
|
||||
if err == nil {
|
||||
if _, ok := named.(reference.Canonical); ok {
|
||||
_, err := c.backend.LookupImage(spec.Image)
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if the image needs to be pulled, the auth config will be retrieved and updated
|
||||
var encodedAuthConfig string
|
||||
if spec.PullOptions != nil {
|
||||
|
|
Loading…
Add table
Reference in a new issue