Skip to content

docker pull does not know how to resume previous failed attempt #1187

@jchia

Description

@jchia
  • This is a bug report
  • This is a feature request
  • I searched existing issues before opening this one

Expected behavior

When a first attempt to docker pull an image fails after it has partial downloaded some data, a subsequent attempt should not start from scratch but resume the download from wherever the previous attempt failed. This way, when downloading an image that is large relative to network reliability, there is a high-enough probability of docker pull succeeding within a reasonable number of attempts.

Actual behavior

Subsequent docker pull attempts start from scratch even if a previous attempt has "pull complete" for some layers. This means that for a large image and an intermittently failing connection, the chance of docker pull completing within a reasonable number of tries approaches zero as the image size increases. Consequently, this behavior can be considered to be a usability bug.

$ docker pull xilinx/vitis-ai:latest
latest: Pulling from xilinx/vitis-ai
f22ccc0b8772: Pull complete 
3cf8fb62ba5f: Pull complete 
e80c964ece6a: Pull complete 
afd3e84ff233: Pull complete 
caba11bf89c1: Pull complete 
21ff7ffad7fb: Pull complete 
0a1fb73e7f8f: Pull complete 
b700632d3b49: Pull complete 
f32b167b0bc9: Pull complete 
d5dca61bcafa: Pull complete 
bb15414437e3: Pull complete 
e73de575fa84: Pull complete 
b1a14839c8e3: Pull complete 
75052f7c411f: Pull complete 
e6c777df29dc: Pull complete 
741b871f4d0b: Pull complete 
bd09e2cec15d: Pull complete 
49359a403f15: Pull complete 
3dc515bfbb5a: Pull complete 
705cf80df2f3: Pull complete 
53d1bd56d0d4: Pull complete 
d2572bf03a3f: Pull complete 
c970ce782924: Pull complete 
b18006f4f833: Pull complete 
7dc2ec620aa4: Pull complete 
31cda23c4bce: Pull complete 
c4a6256a9c1b: Downloading [==================================================>]  3.801GB/3.801GB
b0190525f152: Download complete 
b44b92ba8003: Download complete 
ab4ebe064c35: Download complete 
unexpected EOF
$ docker pull xilinx/vitis-ai:latest
latest: Pulling from xilinx/vitis-ai
f22ccc0b8772: Downloading [======================================>            ]  20.56MB/26.71MB
...

Steps to reproduce the behavior

  1. docker pull xilinx/vitis-ai:latest
  2. Ctrl-C after download finishes for some layer (simulating network failure).
  3. docker pull xilinx/vitis-ai:latest and see that it starts from scratch.

Output of docker version:

$ docker version
Client:
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.13.8
 Git commit:        afacb8b7f0
 Built:             Wed Oct 14 19:43:43 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.8
  Git commit:       afacb8b7f0
  Built:            Wed Oct 14 16:41:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.3.3-0ubuntu2
  GitCommit:        
 runc:
  Version:          spec: 1.0.1-dev
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:

Output of docker info:

Client:
 Debug Mode: false

Server:
 Containers: 3
  Running: 0
  Paused: 0
  Stopped: 3
 Images: 43
 Server Version: 19.03.8
 Storage Driver: overlay2
  Backing Filesystem: <unknown>
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 
 runc version: 
 init version: 
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-47-generic
 Operating System: Ubuntu 20.04.1 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 31.29GiB
 Name: frodo
 ID: KMLP:N2DN:SFDB:3AH4:ATYJ:6TUE:JKWM:SNY5:MHPT:LTG4:KJIW:CGWE
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

Additional environment details (AWS, VirtualBox, physical, etc.)
Ubuntu 20.04.1 LTS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions