Docker build Dockerfile FROM request

Hi

I’m curious about the backend requests that are made whenever a build is executing. I have a private Cloudsmith registry where I store and reference my images from in my Dockerfiles.

FROM docker.cloudsmith.io/my-org/my-repo/library/alpine:3.22.1

In this example I store the public alpine:3.22.1 image from DockerHub.

Whenever I do a docker pull, I can see this sends a GET request to the docker v2 manifests endpoint on my Cloudsmith registry as expected.

docker pull docker.cloudsmith.io/my-org/my-repo/library/alpine:3.22.1

However when building using a Dockerfile with this image as the base, I only ever see a HEAD request submitted to the same endpoint. I have the –no-cache and –pull parameters added to my build command as well to test.

Does the build process not send a GET request?

docker build --no-cache --pull --tag $1:$2 . -f $3 --push

Here is build log:

[internal] load build definition from Dockerfile
	transferring 222/0 0.003
[internal] load metadata for docker.cloudsmith.io/******************/library/alpine:3.22.1
[internal] load .dockerignore
	transferring 2/0 0.002
[stage-1 1/1] FROM docker.cloudsmith.io/******************/library/alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1
	resolve docker.cloudsmith.io/******************/library/alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1 0/0 0.007
	sha256:6e174226ea690ced550e5641249a412cdbefd2d09871f3e64ab52137a54ba606 4130750/4130750 0.665
exporting to image
	exporting layers 0/0 0
	exporting manifest sha256:f29f2a53dba68952c9b8a8e46b1c45d64d59b6a356bde5313e54908205c16733 0/0 0.005
	exporting config sha256:2350daca4a806bd99c45fb52f839697e5e80e9f4ad492f243f140e9f2378205a 0/0 0.002
	exporting attestation manifest sha256:cf9f495494940ff567296aeca6094eebf8b2b9e5fc564e1c11a6308a1f6eefbf 0/0 0.006
	exporting manifest list sha256:45fe8779de5cc9db6816d796d51a4637c5c79c8e3ff2bcdb539224aaa1c45120 0/0 0.002
	naming to docker.cloudsmith.io/*****************/openjdk:cgr-17.0.16 0/0 0.001
	unpacking to docker.cloudsmith.io/*****************/openjdk:cgr-17.0.16 0/0 0.72
	pushing layers 0/0 1.76
	pushing manifest for docker.cloudsmith.io/*****************/openjdk:cgr-17.0.16@sha256:45fe8779de5cc9db6816d796d51a4637c5c79c8e3ff2bcdb539224aaa1c45120 0/0 7.359

I’m running Docker Desktop v4.45.0, the latest one.

I’m not sure about the actual requests sent, but not sending a get request makes sense, since building a new image with buildkit doesn’t pull the images anymore, only the layers. So you would not see the image in the list of docker image ls

How it is exactly implemented, I don’t know.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.