When a user attempts to pull an image, several steps should occur in sequence:
docker pull docker.art.local/nginx
1. Docker checks for the manifest.json of the file:
20180523095420|3182|REQUEST|127.0.0.1|admin|GET|/api/docker/docker/v2/nginx/manifests/latest|HTTP/1.0|200|948
2. The client uses the information in the manifest file to pull the image layers that make up the image:
20180523095420|41|REQUEST|127.0.0.1|admin|GET|/api/docker/docker/v2/nginx/blobs/sha256:ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881|HTTP/1.0|200|6028
20180523095423|2169|REQUEST|127.0.0.1|admin|GET|/api/docker/docker/v2/nginx/blobs/sha256:4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07|HTTP/1.0|200|201
20180523095423|2169|REQUEST|127.0.0.1|admin|GET|/api/docker/docker/v2/nginx/blobs/sha256:4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07|HTTP/1.0|200|201
This completes the pull. If a layer is missing, the container's manifest should be inspected, and all layer requests should return a 200 OK.