Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compute diff from the upper directory of overlayfs-based snapshotter #2181

Merged
merged 1 commit into from
Sep 2, 2021

Conversation

ktock
Copy link
Collaborator

@ktock ktock commented Jun 16, 2021

Fixes: #1704
Fixes: #1192

Currently, BuildKit creates diff blobs by comparing the whole filesystem object of a snapshot to its parent, using walking differ but it turned out it can long time.

This commit is a PoC for the faster diff approach specifically aiming at overlayfs-based snapshotter.

This PR computes a diff blob of an overlayfs-based snapshot using its "upper" directory instead of using walking differ. That upper directory contains the diff between that snapshot and its parent so we don't need to compare the whole filesystem objects between them.

Snapshotter must provide the label containerd.io/snapshot/overlay.upperdir which contains the path to the upper directory of this snapshot. When this label is provided, cache.computeBlobChain tries to compute diff blob using that upper directory. The current version of upstream overlayfs snapshotter doesn't provide this label so I'll open a PR to make it happen if this design looks good to you. This PR uses the patched version of containerd (ktock/containerd@0a3a77b...50ed319).

EDIT now this patch directly parses mount.Mount passed from the snapshotter for identifying the directory that contains the changeset.

Computing diff relies on continuity library. This PR uses fs.diffDirChanges of continuity for computing the diff blob from the upper directory. This PR implements overlayDeleteChange for detecting files to delete and configures fs.diffDirChanges to use this. fs.diffDirChanges is a private method in continuity as of now. I hope containerd/continuity#145 by @fuweid is merged or I'll open a PR if needed. This PR uses the patched version of continuity (ktock/continuity@ce76fcc).

EDIT now this patch re-implements the differ that can be used for overlayfs layers.

Comparison of exporting layers

Dockerfile:

FROM $IMG
RUN echo hello > /hello

command:

buildctl build --progress=plain --frontend=dockerfile.v0 \
         --local context=${CONTEXT} --local dockerfile=${CONTEXT} \
         --output type=docker,name=sample,dest=${RES}/${IMGNAME}.tar
IMG time of exporting layers(walking differ) time of exporting layers(overlayfs differ)
ubuntu:20.04 0.2s 0.1s
python:3.9 1.1s 0.1s
nvidia/cuda:11.3.1-devel-ubuntu20.04 2.5s 0.1s

This is an one-shot measurement.
Appreciate any suggestion about benchmarking.

full log

walking differ

ubuntu:20.04

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 79B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/ubuntu:20.04
#3 DONE 2.7s

#5 [1/2] FROM docker.io/library/ubuntu:20.04@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d
#5 resolve docker.io/library/ubuntu:20.04@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d 0.0s done
#5 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 187B / 187B 0.2s done
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0B / 28.54MB 0.2s
#5 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0B / 851B 0.2s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 15.73MB / 28.54MB 0.8s
#5 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 851B / 851B 0.6s done
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 28.54MB / 28.54MB 1.0s done
#5 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe
#5 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0.8s done
#5 extracting sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0.0s done
#5 extracting sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0.0s done
#5 DONE 1.9s
INFO[0005] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0005] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 

#4 [2/2] RUN echo hello > /hello
#4 DONE 0.1s

#6 exporting to oci image format
#6 exporting layers
#6 exporting layers 0.2s done
#6 exporting manifest sha256:988343cd8dbd8a9014d3c590bac8578fe5164f25d17dac7843135d5187e54bf8 0.0s done
#6 exporting config sha256:a163d59bf83068f96700888408641eb426c78a09c6efd872cfb6e2bea8180f1b 0.0s done
#6 sending tarball
#6 sending tarball 0.1s done
#6 DONE 0.4s

python:3.9

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 77B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/python:3.9
#3 DONE 8.7s

#4 [1/2] FROM docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59
#4 resolve docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59 0.0s done
#4 sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 0B / 2.35MB 0.2s
#4 sha256:aec2e3a8937195ce2863f352c687f204daf3f261310254bb290ce1e5a82ec005 233B / 233B 0.3s done
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 0B / 19.19MB 0.2s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 0B / 6.15MB 0.2s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 0B / 192.35MB 0.2s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 0B / 51.84MB 0.2s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 0B / 10.00MB 0.2s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 0B / 7.83MB 0.2s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 0B / 50.43MB 0.2s
#4 sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 2.35MB / 2.35MB 0.3s done
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 1.05MB / 6.15MB 0.5s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 2.10MB / 19.19MB 0.6s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 6.15MB / 6.15MB 0.6s done
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 6.29MB / 19.19MB 0.8s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 10.49MB / 19.19MB 0.9s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 13.63MB / 19.19MB 1.1s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 15.73MB / 19.19MB 1.2s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 3.15MB / 51.84MB 1.2s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 1.05MB / 7.83MB 1.2s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 16.78MB / 19.19MB 1.4s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 10.49MB / 192.35MB 1.4s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 6.29MB / 51.84MB 1.4s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 1.05MB / 10.00MB 1.4s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 2.10MB / 7.83MB 1.4s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 17.83MB / 19.19MB 1.5s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 2.10MB / 10.00MB 1.5s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 3.15MB / 7.83MB 1.5s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 19.19MB / 19.19MB 1.7s done
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 11.53MB / 51.84MB 1.7s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 3.15MB / 10.00MB 1.7s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 4.19MB / 7.83MB 1.7s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 3.15MB / 50.43MB 1.7s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 14.68MB / 51.84MB 1.8s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 4.19MB / 10.00MB 1.8s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 5.24MB / 7.83MB 1.8s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 17.83MB / 51.84MB 2.0s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 5.24MB / 10.00MB 2.0s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 6.29MB / 7.83MB 2.0s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 22.02MB / 51.84MB 2.1s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 6.29MB / 10.00MB 2.1s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 7.83MB / 7.83MB 2.1s done
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 6.29MB / 50.43MB 2.1s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 25.17MB / 51.84MB 2.3s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 7.34MB / 10.00MB 2.3s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 29.36MB / 51.84MB 2.4s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 10.00MB / 10.00MB 2.5s done
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 9.44MB / 50.43MB 2.4s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 33.55MB / 51.84MB 2.6s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 36.70MB / 51.84MB 2.7s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 14.68MB / 50.43MB 2.7s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 40.89MB / 51.84MB 2.9s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 17.83MB / 50.43MB 2.9s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 20.97MB / 192.35MB 3.2s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 44.04MB / 51.84MB 3.0s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 20.97MB / 50.43MB 3.0s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 48.23MB / 51.84MB 3.2s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 24.12MB / 50.43MB 3.2s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 51.84MB / 51.84MB 3.3s done
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 27.26MB / 50.43MB 3.3s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 32.51MB / 50.43MB 3.5s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 38.80MB / 50.43MB 3.6s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 44.04MB / 50.43MB 3.8s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 31.46MB / 192.35MB 4.1s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 50.43MB / 50.43MB 3.9s done
#4 extracting sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 47.19MB / 192.35MB 4.4s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 71.30MB / 192.35MB 4.8s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 87.03MB / 192.35MB 5.1s
#4 extracting sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 1.4s done
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 102.76MB / 192.35MB 5.4s
#4 extracting sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138
#4 extracting sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 0.2s done
#4 extracting sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 118.49MB / 192.35MB 5.7s
#4 extracting sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 0.2s done
#4 extracting sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 134.22MB / 192.35MB 6.0s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 149.95MB / 192.35MB 6.3s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 166.72MB / 192.35MB 6.6s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 182.45MB / 192.35MB 6.9s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 192.35MB / 192.35MB 7.2s done
#4 extracting sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 1.7s done
#4 extracting sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b
#4 extracting sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 4.9s done
#4 extracting sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db
#4 extracting sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 0.2s done
#4 extracting sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f
#4 extracting sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 0.6s done
#4 extracting sha256:aec2e3a8937195ce2863f352c687f204daf3f261310254bb290ce1e5a82ec005 0.0s done
#4 extracting sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244
INFO[0023] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0023] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 
#4 extracting sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 0.1s done
#4 DONE 13.4s

#5 [2/2] RUN echo hello > /hello
#5 DONE 0.2s

#6 exporting to oci image format
#6 exporting layers
#6 exporting layers 1.1s done
#6 exporting manifest sha256:4b5a86bcbaec6cee7d8b85f908a82652e39f1f2400dcfe689781effeb5576c85 0.0s done
#6 exporting config sha256:f3abbf3fc12353c2fcfec3b710f1d70a56de2cc5824be7d8a1ed6f97a9bce475 0.0s done
#6 sending tarball
#6 sending tarball 1.7s done
#6 DONE 2.8s

nvidia/cuda:11.3.1-devel-ubuntu20.04

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 103B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04
#3 DONE 2.7s

#5 [1/2] FROM docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c
#5 resolve docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c done
#5 sha256:56d4c342814717e19bc11910a9ca14fb03a70c1a43157858af4ff952531aba6b 84.83kB / 84.83kB 0.2s done
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 0B / 1.22GB 0.2s
#5 sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 0B / 61.96kB 0.2s
#5 sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 0B / 6.43kB 0.2s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 0B / 1.02GB 0.2s
#5 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 0B / 11.32MB 0.2s
#5 sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 0B / 185B 0.2s
#5 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 0B / 7.93MB 0.2s
#5 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0B / 187B 0.2s
#5 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0B / 851B 0.2s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0B / 28.54MB 0.2s
#5 sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 61.96kB / 61.96kB 0.6s done
#5 sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 6.43kB / 6.43kB 0.7s done
#5 sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 185B / 185B 0.8s done
#5 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 187B / 187B 0.8s done
#5 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 2.10MB / 11.32MB 1.1s
#5 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 2.10MB / 7.93MB 1.1s
#5 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 5.24MB / 11.32MB 1.2s
#5 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 4.19MB / 7.93MB 1.2s
#5 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 11.32MB / 11.32MB 1.4s done
#5 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 5.24MB / 7.93MB 1.4s
#5 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 7.93MB / 7.93MB 1.5s done
#5 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 851B / 851B 1.4s done
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 2.10MB / 28.54MB 1.5s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 5.24MB / 28.54MB 1.8s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 7.34MB / 28.54MB 2.0s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 9.44MB / 28.54MB 2.1s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 11.53MB / 28.54MB 2.3s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 14.68MB / 28.54MB 2.4s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 16.78MB / 28.54MB 2.6s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 61.87MB / 1.22GB 2.9s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 19.92MB / 28.54MB 2.7s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 22.02MB / 28.54MB 2.9s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 25.17MB / 28.54MB 3.0s
#5 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 28.54MB / 28.54MB 3.1s done
#5 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 51.38MB / 1.02GB 4.1s
#5 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0.9s done
#5 extracting sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0.0s done
#5 extracting sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0.0s done
#5 extracting sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12
#5 extracting sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 0.3s done
#5 extracting sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30
#5 extracting sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 0.3s done
#5 extracting sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 0.0s done
#5 extracting sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 0.0s done
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 125.83MB / 1.22GB 5.7s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 104.86MB / 1.02GB 6.2s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 158.33MB / 1.02GB 8.0s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 187.70MB / 1.22GB 8.6s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 210.76MB / 1.02GB 9.6s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 263.19MB / 1.02GB 11.0s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 250.61MB / 1.22GB 11.9s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 316.67MB / 1.02GB 13.2s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 312.48MB / 1.22GB 14.4s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 371.20MB / 1.02GB 14.9s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 427.82MB / 1.02GB 16.4s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 483.39MB / 1.02GB 17.7s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 376.44MB / 1.22GB 18.9s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 536.87MB / 1.02GB 19.4s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 588.25MB / 1.02GB 20.9s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 441.45MB / 1.22GB 22.7s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 640.68MB / 1.02GB 22.5s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 692.06MB / 1.02GB 24.3s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 503.32MB / 1.22GB 25.1s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 744.49MB / 1.02GB 26.6s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 566.23MB / 1.22GB 27.3s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 796.92MB / 1.02GB 28.8s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 629.15MB / 1.22GB 29.4s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 849.35MB / 1.02GB 31.2s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 692.06MB / 1.22GB 31.5s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 904.92MB / 1.02GB 33.5s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 753.93MB / 1.22GB 34.2s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 956.30MB / 1.02GB 35.1s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 1.01GB / 1.02GB 36.9s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 817.89MB / 1.22GB 37.2s
#5 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 1.02GB / 1.02GB 37.3s done
#5 extracting sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 883.95MB / 1.22GB 38.6s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 946.86MB / 1.22GB 39.8s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.01GB / 1.22GB 41.0s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.08GB / 1.22GB 42.3s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.15GB / 1.22GB 43.5s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.21GB / 1.22GB 44.7s
#5 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.22GB / 1.22GB 44.9s done
#5 extracting sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 21.7s done
#5 extracting sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 0.0s done
#5 extracting sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9
INFO[0093] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0093] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 
#5 extracting sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 30.2s done
#5 extracting sha256:56d4c342814717e19bc11910a9ca14fb03a70c1a43157858af4ff952531aba6b 0.0s done
#5 DONE 89.3s

#4 [2/2] RUN echo hello > /hello
#4 DONE 0.5s

#6 exporting to oci image format
#6 exporting layers
#6 exporting layers 2.5s done
#6 exporting manifest sha256:f8b12cc35ec5cd063e959ee780a01c5aea2cd39e2e58d22d2cd578bc77a13e54
#6 exporting manifest sha256:f8b12cc35ec5cd063e959ee780a01c5aea2cd39e2e58d22d2cd578bc77a13e54 0.0s done
#6 exporting config sha256:ed2d6a735c641636d31d177d3612f606cdd288e070ebf590239b2b9afbc83c04 0.0s done
#6 sending tarball
#6 sending tarball 15.4s done
#6 DONE 17.9s

overlayfs diff

ubuntu:20.04

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 79B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/ubuntu:20.04
#3 DONE 3.1s

#4 [1/2] FROM docker.io/library/ubuntu:20.04@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d
#4 resolve docker.io/library/ubuntu:20.04@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d 0.0s done
#4 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0B / 187B 0.2s
#4 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0B / 851B 0.2s
#4 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 187B / 187B 0.3s done
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0B / 28.54MB 0.2s
#4 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 851B / 851B 0.5s done
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 3.15MB / 28.54MB 0.8s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 11.53MB / 28.54MB 0.9s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 18.87MB / 28.54MB 1.1s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 28.54MB / 28.54MB 1.3s done
#4 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe
#4 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0.8s done
#4 extracting sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0.0s done
#4 DONE 2.2s
INFO[0006] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0006] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 

#4 [1/2] FROM docker.io/library/ubuntu:20.04@sha256:adf73ca014822ad8237623d388cedf4d5346aa72c270c5acc01431cc93e18e2d
#4 extracting sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0.0s done
#4 DONE 2.2s

#5 [2/2] RUN echo hello > /hello
#5 DONE 0.2s

#6 exporting to oci image format
#6 exporting layers
#6 exporting layers 0.1s done
#6 exporting manifest sha256:04ca91c99eba09bc5552a29462d13b163b092e4fb879023663c2cf71cf4ff191 0.0s done
#6 exporting config sha256:c94784bb816a70caecbe6881e562e2b1f0167fb0ee4a93156055dec9d7bc878a 0.0s done
#6 sending tarball
#6 sending tarball 0.2s done
#6 DONE 0.3s

python:3.9

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 77B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/library/python:3.9
#3 DONE 3.4s

#4 [1/2] FROM docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59
#4 resolve docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59 0.0s done
#4 DONE 0.5s

#4 [1/2] FROM docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59
#4 sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 0B / 2.35MB 0.2s
#4 sha256:aec2e3a8937195ce2863f352c687f204daf3f261310254bb290ce1e5a82ec005 0B / 233B 0.2s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 0B / 19.19MB 0.2s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 0B / 6.15MB 0.2s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 0B / 192.35MB 0.2s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 0B / 51.84MB 0.2s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 0B / 10.00MB 0.2s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 0B / 7.83MB 0.2s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 0B / 50.43MB 0.2s
#4 sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 2.35MB / 2.35MB 0.3s done
#4 sha256:aec2e3a8937195ce2863f352c687f204daf3f261310254bb290ce1e5a82ec005 233B / 233B 0.2s done
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 4.19MB / 19.19MB 0.5s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 10.49MB / 19.19MB 0.6s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 14.68MB / 19.19MB 0.8s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 2.10MB / 6.15MB 0.6s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 17.83MB / 19.19MB 0.9s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 4.19MB / 6.15MB 0.8s
#4 sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 19.19MB / 19.19MB 1.0s done
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 5.24MB / 6.15MB 0.9s
#4 sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 6.15MB / 6.15MB 1.1s done
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 10.49MB / 192.35MB 1.1s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 1.05MB / 10.00MB 1.2s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 1.05MB / 7.83MB 1.2s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 2.10MB / 10.00MB 1.4s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 2.10MB / 7.83MB 1.4s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 3.15MB / 51.84MB 1.5s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 4.19MB / 10.00MB 1.5s
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 4.19MB / 7.83MB 1.5s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 6.29MB / 10.00MB 1.7s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 3.15MB / 50.43MB 1.7s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 22.02MB / 192.35MB 1.8s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 6.29MB / 51.84MB 1.8s
#4 sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 10.00MB / 10.00MB 1.9s done
#4 sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 7.83MB / 7.83MB 1.8s done
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 6.29MB / 50.43MB 1.8s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 10.49MB / 51.84MB 2.1s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 11.53MB / 50.43MB 2.1s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 15.73MB / 50.43MB 2.3s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 15.73MB / 51.84MB 2.4s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 18.87MB / 50.43MB 2.4s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 32.51MB / 192.35MB 2.6s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 22.02MB / 50.43MB 2.6s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 20.97MB / 51.84MB 2.7s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 25.17MB / 50.43MB 2.7s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 28.31MB / 50.43MB 2.9s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 25.17MB / 51.84MB 3.0s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 31.46MB / 50.43MB 3.0s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 28.31MB / 51.84MB 3.2s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 35.65MB / 50.43MB 3.2s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 42.16MB / 192.35MB 3.3s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 38.80MB / 50.43MB 3.3s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 32.51MB / 51.84MB 3.5s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 41.94MB / 50.43MB 3.5s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 35.65MB / 51.84MB 3.6s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 47.19MB / 50.43MB 3.8s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 40.89MB / 51.84MB 3.9s
#4 sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 50.43MB / 50.43MB 3.9s done
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 54.53MB / 192.35MB 4.1s
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 45.09MB / 51.84MB 4.1s
#4 extracting sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87
#4 sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 51.84MB / 51.84MB 4.3s done
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 68.16MB / 192.35MB 4.5s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 82.84MB / 192.35MB 4.8s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 98.57MB / 192.35MB 5.1s
#4 extracting sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87 1.4s done
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 115.34MB / 192.35MB 5.4s
#4 extracting sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138
#4 extracting sha256:e8d62473a22dec9ffef056b2017968a9dc484c8f836fb6d79f46980b309e9138 0.2s done
#4 extracting sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 131.07MB / 192.35MB 5.7s
#4 extracting sha256:8962bc0fad55b13afedfeb6ad5cb06fd065461cf3e1ae4e7aeae5eeb17b179df 0.2s done
#4 extracting sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 146.80MB / 192.35MB 6.0s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 161.48MB / 192.35MB 6.3s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 176.16MB / 192.35MB 6.6s
#4 sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 192.35MB / 192.35MB 6.9s done
#4 extracting sha256:65d943ee54c1fa196b54ab9a6673174c66eea04cfa1a4ac5b0328b74f066a4d9 1.6s done
#4 extracting sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b
#4 extracting sha256:532f6f7237092ebd79f21ccd3cf050138b31abeed1b29bac39cfdb30786a615b 4.7s done
#4 extracting sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db
#4 extracting sha256:1334e0fe2851ea7f3d2509a3907312a665d7c6b085e1f0671f6cd2dcf37b82db 0.2s done
#4 DONE 12.3s

#4 [1/2] FROM docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59
#4 extracting sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f
#4 extracting sha256:062ada600c9e0239e04bfc21da3719c4d0db3276450b28c455231f416015ba9f 0.5s done
#4 extracting sha256:aec2e3a8937195ce2863f352c687f204daf3f261310254bb290ce1e5a82ec005 0.0s done
#4 DONE 12.8s

#4 [1/2] FROM docker.io/library/python:3.9@sha256:e8e000f3c551f93d7b03d241e38c1206eb8c8a1f1a6179902f74e068fc98ee59
#4 extracting sha256:1ec7c3bcb4b287487eab99f3ce2a6932f37957d4c904430c3acd8b2687a72244 0.1s done
#4 DONE 13.0s
INFO[0018] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0018] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 

#5 [2/2] RUN echo hello > /hello
#5 DONE 0.2s

#6 exporting to oci image format
#6 exporting layers 0.1s done
#6 exporting manifest sha256:921e0ffdbb3f3a3516295405b2d46d6b16bcc5a299b8ce776284584b5d8a5bc7 0.0s done
#6 exporting config sha256:281d75ce26f3aa4333a38c4c34aad798b62a5ee3b475e8f233ee05134bab3d5f 0.0s done
#6 sending tarball
#6 sending tarball 1.5s done
#6 DONE 1.7s

nvidia/cuda:11.3.1-devel-ubuntu20.04

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 103B done
#1 DONE 0.1s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.1s

#3 [internal] load metadata for docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04
#3 DONE 2.6s

#4 [1/2] FROM docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c
#4 resolve docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c 0.0s done
#4 DONE 0.4s

#4 [1/2] FROM docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c
#4 sha256:56d4c342814717e19bc11910a9ca14fb03a70c1a43157858af4ff952531aba6b 84.83kB / 84.83kB 0.2s done
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 0B / 1.22GB 0.2s
#4 sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 0B / 61.96kB 0.2s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 0B / 1.02GB 0.2s
#4 sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 0B / 6.43kB 0.2s
#4 sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 0B / 185B 0.2s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 0B / 11.32MB 0.2s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 0B / 7.93MB 0.2s
#4 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0B / 187B 0.2s
#4 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0B / 851B 0.2s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0B / 28.54MB 0.2s
#4 sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 61.96kB / 61.96kB 0.6s done
#4 sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 185B / 185B 0.7s done
#4 sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 6.43kB / 6.43kB 0.8s done
#4 sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 187B / 187B 0.8s done
#4 sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 851B / 851B 0.8s done
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 1.05MB / 11.32MB 0.9s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 3.15MB / 11.32MB 1.1s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 5.24MB / 11.32MB 1.2s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 1.05MB / 7.93MB 1.2s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 3.15MB / 28.54MB 1.2s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 6.29MB / 11.32MB 1.4s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 5.24MB / 28.54MB 1.4s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 8.39MB / 11.32MB 1.5s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 2.10MB / 7.93MB 1.5s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 8.39MB / 28.54MB 1.5s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 9.44MB / 11.32MB 1.7s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 3.15MB / 7.93MB 1.7s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 10.49MB / 28.54MB 1.7s
#4 sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 11.32MB / 11.32MB 1.8s done
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 4.19MB / 7.93MB 1.8s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 14.68MB / 28.54MB 1.8s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 5.24MB / 7.93MB 2.0s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 17.83MB / 28.54MB 2.0s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 6.29MB / 7.93MB 2.1s
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 22.02MB / 28.54MB 2.1s
#4 sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 7.93MB / 7.93MB 2.2s done
#4 sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 28.54MB / 28.54MB 2.3s done
#4 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe
#4 extracting sha256:345e3491a907bb7c6f1bdddcf4a94284b8b6ddd77eb7d93f09432b17b20f2bbe 0.8s done
#4 extracting sha256:57671312ef6fdbecf340e5fed0fb0863350cd806c92b1fdd7978adbd02afc5c3 0.0s done
#4 extracting sha256:5e9250ddb7d0fa6d13302c7c3e6a0aa40390e42424caed1e5289077ee4054709 0.0s done
#4 extracting sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12
#4 extracting sha256:c76dcc6f3afe0a60183c9148fa635f30351717b39022bea8b5b39b690d391b12 0.2s done
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 63.96MB / 1.22GB 3.6s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 51.38MB / 1.02GB 3.6s
#4 extracting sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30
#4 extracting sha256:d07426e4cea449120e1e17c3a5b89268f4d40fa2bade0803b6c70d0e1c67fe30 0.3s done
#4 extracting sha256:2442bbbb3364a992bfb76035b848ddb5319ede6d0afbdc6d8ea750340397f66e 0.0s done
#4 extracting sha256:5489cc61b656f9678b2b4ab7959a61bfe574fc39988136ea24d0fa078b96678b 0.0s done
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 108.00MB / 1.02GB 5.4s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 125.83MB / 1.22GB 6.8s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 161.48MB / 1.02GB 7.5s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 190.84MB / 1.22GB 8.7s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 212.86MB / 1.02GB 10.1s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 252.71MB / 1.22GB 11.4s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 265.29MB / 1.02GB 12.0s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 317.72MB / 1.22GB 13.7s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 317.72MB / 1.02GB 14.9s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 380.63MB / 1.22GB 15.8s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 442.50MB / 1.22GB 17.6s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 372.24MB / 1.02GB 17.7s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 508.56MB / 1.22GB 20.0s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 427.82MB / 1.02GB 20.1s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 481.30MB / 1.02GB 21.8s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 572.52MB / 1.22GB 23.0s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 534.79MB / 1.02GB 23.7s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 586.15MB / 1.02GB 25.2s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 636.49MB / 1.22GB 26.4s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 637.53MB / 1.02GB 26.6s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 691.01MB / 1.02GB 28.2s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 699.40MB / 1.22GB 29.4s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 745.54MB / 1.02GB 30.0s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 800.06MB / 1.02GB 31.7s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 766.51MB / 1.22GB 32.6s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 852.49MB / 1.02GB 33.8s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 834.67MB / 1.22GB 35.0s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 903.87MB / 1.02GB 35.6s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 956.30MB / 1.02GB 37.2s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 896.53MB / 1.22GB 37.8s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 1.01GB / 1.02GB 39.3s
#4 sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 1.02GB / 1.02GB 39.6s done
#4 extracting sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 959.45MB / 1.22GB 40.2s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.02GB / 1.22GB 41.6s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.09GB / 1.22GB 43.1s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.15GB / 1.22GB 44.9s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.22GB / 1.22GB 46.5s
#4 sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 1.22GB / 1.22GB 46.5s done
#4 extracting sha256:e000561f354f29180ccdceadaca269fa884f5cc764131fd7b69cab3a2c777928 19.5s done
#4 extracting sha256:26aa2a3f926e332d4c3d913ac3e6e830326e0fb586dced9d924060b323be9835 0.0s done
#4 DONE 59.3s

#4 [1/2] FROM docker.io/nvidia/cuda:11.3.1-devel-ubuntu20.04@sha256:1e0aaefc4922000da157cd2e23d975c15b8e29dc87a343b3d91c2393e2fc363c
#4 extracting sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9
INFO[0088] No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4] 
INFO[0088] IPv6 enabled; Adding default IPv6 external servers: [nameserver 2001:4860:4860::8888 nameserver 2001:4860:4860::8844] 
#4 extracting sha256:6661fa7c07f196dbbda39c359466ad275984b434fff6f80a8cdd75cfba0e06e9 24.6s done
#4 extracting sha256:56d4c342814717e19bc11910a9ca14fb03a70c1a43157858af4ff952531aba6b 0.0s done
#4 DONE 83.9s

#5 [2/2] RUN echo hello > /hello
#5 DONE 0.3s

#6 exporting to oci image format
#6 exporting layers 0.1s done
#6 exporting manifest sha256:89d4325e58a83b0a79c9369c9906c706960bda7cb67fafa8691e82c334083b6b 0.0s done
#6 exporting config sha256:308c3767b2d2eb9beb88f6e827463cdd6990c03bf59e40bd03ebc24cea7dff53 0.0s done
#6 sending tarball
#6 sending tarball 12.9s done
#6 DONE 13.0s

@ktock
Copy link
Collaborator Author

ktock commented Jun 16, 2021

cc: @tonistiigi @fuweid

@tonistiigi tonistiigi requested a review from sipsma June 16, 2021 03:45
cache/blobs.go Outdated

// Check if this is an opaque directory
if f.IsDir() {
opaque, err := sysx.LGetxattr(filepath.Join(diffDir, path), "trusted.overlay.opaque")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also user.overlay.opaque

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added check for user.overlay.opaque as well.

cache/blobs.go Outdated
}
if maj == 0 && min == 0 {
// This file is deleted from base directory
if _, err := os.Stat(filepath.Join(base, path)); err != nil {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this needs to be Lstat instead of Stat, otherwise if this is a symlink we'll be checking the existence of its target, not the symlink itself

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed this.

cache/blobs.go Outdated
return "", false, err
}
// This file doesn't exist even in the base dir. We don't need whiteout.
return "", true, nil
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is skip set to true here? If this dir exists in upper but not base, shouldn't it be included as part of the diff (as a dir creation)?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. Fixed this.

@ktock ktock force-pushed the overlaydiff branch 3 times, most recently from c723b4c to 8cd99ac Compare June 16, 2021 06:56
@Xplouder
Copy link

@ktock probably this PR also fixes docker/buildx#537

@fuweid
Copy link
Contributor

fuweid commented Jun 18, 2021

@ktock will take a look later. thanks for the /cc

@tonistiigi
Copy link
Member

Removing milestone as seems to depend on unmerged upstream patches.

I haven't reviewed yet but why do we need extra labels instead of just parsing the mount options and comparing them?

@ktock
Copy link
Collaborator Author

ktock commented Jul 7, 2021

Removing milestone as seems to depend on unmerged upstream patches.

Sure. I keep on working on these patches.

why do we need extra labels instead of just parsing the mount options and comparing them?

Because they are implementation details of overlayfs snapshotter. This can easily change without notification in the future.

@tonistiigi
Copy link
Member

Because they are implementation details of overlayfs snapshotter.

Wdym? If you parse the mount opts then this is what the kernel defines.

@ktock
Copy link
Collaborator Author

ktock commented Jul 7, 2021

@tonistiigi
In the current implementation, overlayfs snaphsotter returns different types of []mount.Mount per the type of the snaphsotter (Active vs Committed vs View) and per the number of the parent snapshots. (e.g. the bottommost snapshot returns bind mount and stacked snapshot returns overlayfs mount).

It's possible to write the parser considering this logic but I worry about that this logic can change without notification in the future and we cannot notice this change until we encounter the failure of the diff calculation. So I tried to introduce the label that is defined to point to the upperdir of the snapshotter.

WDYT? Is it fine to have the parser assuming the current snapshotter implementation?

@tonistiigi
Copy link
Member

The parser should have the same logic that kernel uses when parsing the mount options. Eg. no difference in order between upper and lower, but order important for the lowers list. If changes happen they can't happen in a way that kernel would not accept the mount anymore. This is similar to how the applier detects that it can extract fast on overlay I believe.

@ktock
Copy link
Collaborator Author

ktock commented Jul 7, 2021

This is similar to how the applier detects that it can extract fast on overlay I believe.

Sure. I'll take a deeper look at this.

@ktock ktock force-pushed the overlaydiff branch 2 times, most recently from fff84a8 to 460c9ed Compare July 14, 2021 03:21
@ktock
Copy link
Collaborator Author

ktock commented Jul 14, 2021

Updated the patch to remove the dependency to the forks of containerd and continuity.
Instead of relying on the snapshotter label, this now directly parses mount.Mount and identifies the directory that contains the changeset. I also added tests ported from https://github.com/containerd/continuity/blob/v0.1.0/fs/diff_test.go for making sure the new diff logic doesn't cause the regression.

@ktock ktock marked this pull request as ready for review July 14, 2021 04:06
}
}
}
return append([]string{u}, l...)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If l[0] is the bottom layer, then shouldn't the top layer, u, be at the end of the slice here? i.e. return append(l, u)?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. Fixed this.

if f != nil {
if isOpaque, err := checkOpaque(upperdir, path, base, f); err != nil {
return err
} else if isOpaque {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: when isOpaque is true, could we return filepath.SkipDir as the error? Seems like it might be a simpler way to prevent checking files/dirs under an opaque dir than maintaining the opaqueDirs map and checking prefixes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea! Fixed to use filepath.SkipDir instead of the map.

@ktock
Copy link
Collaborator Author

ktock commented Aug 31, 2021

rebased.

Copy link
Member

@tonistiigi tonistiigi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if it is worth to set up an additional integration test worker for this. Or maybe for some specific tests that do use differ. May be follow-up if tricky. A start would be to add env var to configure this. If it is set but overlay diff can't be done then it is a fatal error.

return "", err
}
default:
return "", fmt.Errorf("cannot get layer information from mount option (type = %q)", lowerM.Type)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: errors.Errorf and elsewhere

cache/blobs.go Outdated
// Try optimized diff for overlayfs
desc, err = sr.computeOverlayBlob(ctx, lower, upper, mediaType, sr.ID(), compressorFunc)
if err != nil {
logrus.Debugf("failed to compute blob (%s) from diff of overlay snapshotter: %+v", sr.ID(), err)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should avoid printing this if overlay is not used. Maybe tryComputeOverlayBlob and return desc, ok, err so we can determine between actual error and mount just not being overlay.

Copy link
Member

@tonistiigi tonistiigi Sep 2, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't this just be

if err != nil {
  fail
}
if ok {
  desc = computed
}

and in upperdir, err := getOverlayUpperdir don't throw away the error but do same bool check. if the mount is not type overlay then return false and the regular Compare is called here. If it is type overlay then all next errors will be actual errors. Or if you think we should gracefully handle errors in case there are kernel changes then fail on BUILDKIT_DEBUG_FORCE_OVERLAY_DIFF only here and log with Warn for the rest(if bool is false then never log).

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the review. Fixed the error handling logic.

@ktock ktock force-pushed the overlaydiff branch 5 times, most recently from 2a4af80 to d236f05 Compare September 2, 2021 05:04
)

func (sr *immutableRef) tryComputeOverlayBlob(ctx context.Context, lower, upper []mount.Mount, mediaType string, ref string, compressorFunc compressor) (_ ocispecs.Descriptor, ok bool, err error) {
return ocispecs.Descriptor{}, true, fmt.Errorf("overlayfs-based diff computing is unsupported")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one fmt.Errorf left

cache/blobs.go Outdated
}
if desc.Digest == "" && debugMustOverlayDiff(sr.cm.ManagerOpt.Snapshotter.Name()) {
// fallback is disabled. used for testing/debugging.
return nil, errors.Errorf("failed to compute overlay blob (ok=%v): %v", ok, err)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

possibly this could be warning if implied from snapshotter, and error if from env. In follow up tests we would set the env to make sure it is working and not fallback.

@ktock ktock force-pushed the overlaydiff branch 2 times, most recently from 3906be9 to f105370 Compare September 2, 2021 06:26
cache/blobs.go Outdated
if desc.Digest == "" {
switch sr.cm.ManagerOpt.Snapshotter.Name() {
case "overlayfs", "fuse-overlayfs", "stargz":
if os.Getenv("BUILDKIT_DEBUG_FORCE_OVERLAY_DIFF") == "1" {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this condition should be before switch. If overlay diff is forced but native snapshotter is used then it is an error as well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is better if these env use ParseBool instead of 1|0 constants. use a helper method to avoid duplication if reused.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is still not correct.

If env true
- if mount not overlay: error with "overlay mounts not detected"
- if diff error: error while keeping the original error

if env false
  never call tryComputeOverlayBlob

no env:
- if mount not overlay or diff error
  - if snapshotter should support overlay: warn with original error, or "overlay mounts not detected"
  - else: do nothing
- else: success

No double warn

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the suggestion. Implemented the logic.

cache/blobs.go Outdated
if err != nil {
return nil, err
var desc ocispecs.Descriptor
if len(lower) > 0 && !isTypeWindows(sr) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BUILDKIT_DEBUG_FORCE_OVERLAY_DIFF=0 should also be a condition to skip this. This can be follow-up to the time when tests would actually set it.

@ktock ktock force-pushed the overlaydiff branch 3 times, most recently from 0dfd541 to 0c62fd8 Compare September 2, 2021 07:28
@ktock ktock marked this pull request as draft September 2, 2021 07:32
@ktock ktock marked this pull request as ready for review September 2, 2021 07:41
@ktock
Copy link
Collaborator Author

ktock commented Sep 2, 2021

All green

desc = computed
} // never call overlay diff if env is false
} else if !isTypeWindows(sr) {
computed, ok, err := sr.tryComputeOverlayBlob(ctx, lower, upper, mediaType, sr.ID(), compressorFunc)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the logic looks correct now but if you can, try to call tryComputeOverlayBlob only once. Even if it doesn't save lines, because env is(will be) used by the tests it is better if it doesn't go to a different code path. I can imagine a future change that modifies one branch only and we can't catch the error with tests. For the "overlay mounts not detected" case you can print the mount params, both for env and snapshotter case.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
Comment on lines +185 to +187
if runtime.GOOS != "windows" {
cmd.Env = append(cmd.Env, "BUILDKIT_DEBUG_FORCE_OVERLAY_DIFF=true")
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enabled overlay differ tests in integration tests to see if it doesn't break the current behaviour.

@ktock
Copy link
Collaborator Author

ktock commented Sep 2, 2021

All tests passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
7 participants