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

Images created with buildx sometimes have layers that are incorrect/zero bytes #2198

Closed
mbentley opened this issue Jun 24, 2021 · 19 comments
Closed
Labels
Milestone

Comments

@mbentley
Copy link

mbentley commented Jun 24, 2021

Cross posting from docker/buildx#637 as it's probably more relevant directly to buildkit.

I've been building images with buildx primary for the past couple of weeks and I have seen some very odd behavior where the image manifest appears to be written incorrectly. So far, this only appears to happen when I am re-running a build where at least a portion of the image is cached. Here is an example scenario but it doesn't just happen for this one project. Another user reported the same problem on another image with a build that is done using the exact same template as reported here. Here is the GitHub repo for the app I am showing the logs for below.

docker version:

# docker version
Client: Docker Engine - Community
 Version:           20.10.7
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        f0df350
 Built:             Wed Jun  2 11:56:40 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.7
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       b0f5bc3
  Built:            Wed Jun  2 11:54:48 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.6
  GitCommit:        d71fcd7d8303cbf684402823e425e9dd2e99285d
 runc:
  Version:          1.0.0-rc95
  GitCommit:        b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Here are the buildx settings:

Creating the builder:

docker buildx create --name builder1 --config ~/buildkit.toml --driver-opt network=host --node builder1

For build buildkit.toml, it just includes values to use my registry cache/mirror to avoid rate limits of Docker Hub:

[registry."docker.io"]
  mirrors = ["registry-mirror.casa.mbentley.net"]

Here is my docker buildx ls & docker buildx inspect output:

$ docker buildx ls
NAME/NODE  DRIVER/ENDPOINT                            STATUS  PLATFORMS
builder1   docker-container
  builder1 unix:///var/lib/jenkins/docker/docker.sock running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default *  docker
  default  default                                    running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

$ docker buildx inspect builder1
Name:   builder1
Driver: docker-container

Nodes:
Name:      builder1
Endpoint:  unix:///var/lib/jenkins/docker/docker.sock
Status:    running
Platforms: linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

Image used by the buildx container:

moby/buildkit:buildx-stable-1@sha256:171689e43026533b48701ab6566b72659dd1839488d715c73ef3fe387fab9a80

I have also tried using from master just in case there was something that has been fixed since then and I have seen the same issue:

moby/buildkit:master@sha256:e0b50ede98f8d241d051b09fceae8956d0e07656657fcd86421e0feff04838ad

I am seeing some messages in the buildx builder container and I am not sure what the errors exactly mean but they don't seem to specifically indicate that something is wrong as they happen when an image was built fine:

...
time="2021-06-20T07:00:11Z" level=warning msg="invalid image config with unaccounted layers"
time="2021-06-20T07:00:12Z" level=warning msg="failed to update distribution source for layer sha256:5c126ace4b8e4d5e2d1fa6699ac82dddc270a48ac66d40ecca9bbccf7e61d697: content digest sha256:5c126ace4b8e4d5e2d1fa6699ac82dddc270a48ac66d40ecca9bbccf7e61d697: not found"
time="2021-06-20T07:00:12Z" level=warning msg="failed to update distribution source for layer sha256:53380879c22c14c31df822b3976e5f7dc41d082e46dc33b5821183449cdd6be3: content digest sha256:53380879c22c14c31df822b3976e5f7dc41d082e46dc33b5821183449cdd6be3: not found"
time="2021-06-20T07:00:13Z" level=warning msg="reference for unknown type: application/vnd.buildkit.cacheconfig.v0"
time="2021-06-20T07:00:21Z" level=warning msg="failed to update distribution source for layer sha256:aa4b46473fcf70f92312bdb4920f0c4c342327d0db0329763a1d1751106fe362: content digest sha256:aa4b46473fcf70f92312bdb4920f0c4c342327d0db0329763a1d1751106fe362: not found"
time="2021-06-20T07:00:21Z" level=warning msg="failed to update distribution source for layer sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87: content digest sha256:d960726af2bec62a87ceb07182f7b94c47be03909077e23d8226658f80b47f87: not found"
time="2021-06-20T07:00:21Z" level=warning msg="failed to update distribution source for layer sha256:31e53a1e85966a7f2a77ed3627df81b3bf248754c8434e504426fcf4cf8c982f: content digest sha256:31e53a1e85966a7f2a77ed3627df81b3bf248754c8434e504426fcf4cf8c982f: not found"
time="2021-06-20T07:00:21Z" level=warning msg="failed to update distribution source for layer sha256:3bcb7e2703c0b6d494dcddb5ac5904498385a9f4495a886bc2262651fd2644d4: content digest sha256:3bcb7e2703c0b6d494dcddb5ac5904498385a9f4495a886bc2262651fd2644d4: not found"
time="2021-06-20T07:00:21Z" level=warning msg="failed to update distribution source for layer sha256:2e97a69f7f22afda6401e1fcc261f1e8cf243aeafb5a5217f895fc8f40660467: content digest sha256:2e97a69f7f22afda6401e1fcc261f1e8cf243aeafb5a5217f895fc8f40660467: not found"
time="2021-06-20T07:00:21Z" level=warning msg="reference for unknown type: application/vnd.buildkit.cacheconfig.v0"
...

Here is an example of a build command where I am using the same basic structure across many projects:

docker buildx build \
  --builder builder1 \
  --pull \
  --push \
  --progress plain \
  --build-arg AIRSONIC_VER=$(wget -q -O - https://api.github.com/repos/airsonic/airsonic/releases/latest | jq -r .tag_name) \
  --platform linux/amd64 \
  -t mbentley/airsonic:latest \
  -f Dockerfile \
  --cache-from=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache \
  --cache-to=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache,mode=max \
  .

My registry is just a simple v2 open source registry with valid SSL certs for https.

An example error that you might see is something like this:

# docker start airsonic
Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/entrypoint.sh": stat /entrypoint.sh: no such file or directory: unknown
Error: failed to start containers: airsonic

Rebuilding the image appears to re-write the manifest and it works fine. Here are some outputs from a few commands showing the issue on these two images:

Broken:
mbentley/airsonic@sha256:e78d073b03e7802217825e7763d33ebf5f07ed4d2adc0bd94d4345854a15d4c3

Working:
mbentley/airsonic@sha256:29aa0bb26757325405da60b4aa7d92fa3cf0fb489982ed4c19bc3580ad94ada1

docker history of broken dh_output.txt:

IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
fa972d2adb4a   4 days ago   CMD ["java" "-Dserver.address=0.0.0.0" "-Dse…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   ENTRYPOINT ["/entrypoint.sh"]                   0B        buildkit.dockerfile.v0
<missing>      4 days ago   VOLUME [/data]                                  0B        buildkit.dockerfile.v0
<missing>      4 days ago   EXPOSE map[4040/tcp:{}]                         0B        buildkit.dockerfile.v0
<missing>      4 days ago   WORKDIR /var/airsonic                           0B        buildkit.dockerfile.v0
<missing>      4 days ago   USER airsonic                                   0B        buildkit.dockerfile.v0
<missing>      4 days ago   COPY entrypoint.sh /entrypoint.sh # buildkit    0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (AIRS…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   4.71kB    buildkit.dockerfile.v0
<missing>      4 days ago   ENV AIRSONIC_MAJOR_VER=10                       0B        buildkit.dockerfile.v0
<missing>      4 days ago   ARG AIRSONIC_VER                                0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN /bin/sh -c (apk --no-cache add ca-certif…   181MB     buildkit.dockerfile.v0
<missing>      4 days ago   MAINTAINER Matt Bentley <[email protected]…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>      4 days ago   /bin/sh -c #(nop) ADD file:f278386b0cef68136…   5.6MB

docker history of working dh_output2.txt:

IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
2f71e4b4043a   4 days ago   CMD ["java" "-Dserver.address=0.0.0.0" "-Dse…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   ENTRYPOINT ["/entrypoint.sh"]                   0B        buildkit.dockerfile.v0
<missing>      4 days ago   VOLUME [/data]                                  0B        buildkit.dockerfile.v0
<missing>      4 days ago   EXPOSE map[4040/tcp:{}]                         0B        buildkit.dockerfile.v0
<missing>      4 days ago   WORKDIR /var/airsonic                           0B        buildkit.dockerfile.v0
<missing>      4 days ago   USER airsonic                                   0B        buildkit.dockerfile.v0
<missing>      4 days ago   COPY entrypoint.sh /entrypoint.sh # buildkit    865B      buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   168B      buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   15B       buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (AIRS…   84.7MB    buildkit.dockerfile.v0
<missing>      4 days ago   RUN |1 AIRSONIC_VER=v10.6.2 /bin/sh -c (mkdi…   4.71kB    buildkit.dockerfile.v0
<missing>      4 days ago   ENV AIRSONIC_MAJOR_VER=10                       0B        buildkit.dockerfile.v0
<missing>      4 days ago   ARG AIRSONIC_VER                                0B        buildkit.dockerfile.v0
<missing>      4 days ago   RUN /bin/sh -c (apk --no-cache add ca-certif…   181MB     buildkit.dockerfile.v0
<missing>      4 days ago   MAINTAINER Matt Bentley <[email protected]…   0B        buildkit.dockerfile.v0
<missing>      4 days ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>      4 days ago   /bin/sh -c #(nop) ADD file:f278386b0cef68136…   5.6MB

In case it is helpful, here are the docker inspect outputs:
Broken
Working

I am using Jenkins to perform my builds. I see nothing to indicate why this is failing:

Broken build:

+ docker buildx build --builder builder1 --pull --push --progress plain --build-arg AIRSONIC_VER=v10.6.2 --platform linux/amd64 -t mbentley/airsonic:latest -f Dockerfile --cache-from=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache --cache-to=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache,mode=max .
#1 [internal] load build definition from Dockerfile
#1 sha256:8df12d67db120c22f2cd768148b423f1e8db4bac2fa3d77864d01a0b90e8d2eb
#1 transferring dockerfile: 2.27kB done
#1 DONE 0.0s

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

#3 [internal] load metadata for docker.io/library/alpine:latest
#3 sha256:d4fb25f5b5c00defc20ce26f2efc4e288de8834ed5aa59dff877b495ba88fda6
#3 DONE 5.5s

#4 importing cache manifest from registry.casa.mbentley.net/mbentley/airsonic:latest-cache
#4 sha256:54d6ce93e51693820c800f2f73075a6183237f347857e154552181a870bbb9d1
#4 DONE 0.0s

#5 [1/8] FROM docker.io/library/alpine:latest@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0
#5 sha256:83cc88488a3bbdd9d2e20ed4b0eb8ecd26a4dff43878c2e68a842fed290ad078
#5 resolve docker.io/library/alpine:latest@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0 0.0s done
#5 DONE 0.0s

#11 [internal] load build context
#11 sha256:d4647f1f5d80ffc907a5589365df0ab882d64d7f2a5ad2e945093014bfc1f410
#11 transferring context: 907B 0.0s done
#11 DONE 0.0s

#12 [7/8] COPY entrypoint.sh /entrypoint.sh
#12 sha256:1c45220cbed07bd67cd26c7e52bce81257cd0eee7ee6be4a94cb3e515a92b92d
#12 CACHED

#7 [3/8] RUN (mkdir /var/airsonic &&  addgroup -g 504 airsonic &&  adduser -h /var/airsonic -D -u 504 -g airsonic -G airsonic -s /sbin/nologin airsonic &&  chown -R airsonic:airsonic /var/airsonic)
#7 sha256:1dd82e7179d413ef03ab329f8e1daf6d9d82624ebb6124f071fd8a3690381720
#7 CACHED

#10 [6/8] RUN (mkdir /data &&  cd /data &&  mkdir db index16 lucene2 lastfmcache thumbs music Podcast playlists .cache .java &&  touch airsonic.properties rollback.sql &&  cd /var/airsonic &&  ln -s /data/db &&  ln -s /data/index16 &&  ln -s /data/lucene2 &&  ln -s /data/lastfmcache &&  ln -s /data/thumbs &&  ln -s /data/music &&  ln -s /data/Podcast &&  ln -s /data/playlists &&  ln -s /data/.cache &&  ln -s /data/.java &&  ln -s /data/airsonic.properties &&  ln -s /data/rollback.sql &&  chown -R airsonic:airsonic /data)
#10 sha256:537ff7293a632ef34d77a985eca7229badd7d2b9309d5e5e11e78ce6cb790cbf
#10 CACHED

#6 [2/8] RUN (apk --no-cache add ca-certificates ffmpeg ttf-dejavu openjdk8 wget jq)
#6 sha256:8eaba8e869c391b7166657cc0a1455b604737370729a18d94ef373a087941341
#6 CACHED

#8 [4/8] RUN (AIRSONIC_VER="$(wget -q -O - https://api.github.com/repos/airsonic/airsonic/releases/latest | jq -r .tag_name)" &&  if [ "$(echo v10.6.2 | awk -F '.' '{print $1}')" != "v10" ]; then echo "Latest version number is no longer 10"; exit 1; fi &&  wget "https://github.com/airsonic/airsonic/releases/download/v10.6.2/airsonic.war" -O /var/airsonic/airsonic.war &&  chown airsonic:airsonic /var/airsonic/airsonic.war)
#8 sha256:3835982beb295b97e3aa4974aca74b0ba79f245ab2e64d5c62615c58cbf37051
#8 CACHED

#9 [5/8] RUN (mkdir /var/airsonic/transcode &&  ln -s /usr/bin/ffmpeg /var/airsonic/transcode/ffmpeg &&  chown -R airsonic:airsonic /var/airsonic/transcode)
#9 sha256:ad84205011c43d7cd451e5f369174eb417683b646df092e20fd67b7a4f745a5a
#9 CACHED

#13 [8/8] WORKDIR /var/airsonic
#13 sha256:cb1ba2e204c69fdfd1ec2b5618052a48c8c9457e19355452ae95b325ec244d09
#13 CACHED

#14 exporting to image
#14 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#14 exporting layers done
#14 exporting manifest sha256:e78d073b03e7802217825e7763d33ebf5f07ed4d2adc0bd94d4345854a15d4c3 0.0s done
#14 exporting config sha256:fa972d2adb4a1fcc619a9ae6c02662c74ba0b564ef40675a0a52d40b110cd21c 0.0s done
#14 pushing layers
#14 ...

#15 [auth] mbentley/airsonic:pull,push token for registry-1.docker.io
#15 sha256:af6bfb8d65f9654c0328f15c4fcd08bd98be5645b915ca1105506ee7e5ea8467
#15 DONE 0.0s

#14 exporting to image
#14 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#14 pushing layers 1.2s done
#14 pushing manifest for docker.io/mbentley/airsonic:latest
#14 pushing manifest for docker.io/mbentley/airsonic:latest 0.3s done
#14 DONE 1.6s

#16 exporting cache
#16 sha256:2700d4ef94dee473593c5c614b55b2dedcca7893909811a8f2b48291a1f581e4
#16 preparing build cache for export done
#16 writing layer sha256:47fcdba1db8f6bb2e24cadfbf88957aecd675c89553230b5266ef1876b863ac3 done
#16 writing layer sha256:53380879c22c14c31df822b3976e5f7dc41d082e46dc33b5821183449cdd6be3 done
#16 writing layer sha256:5843afab387455b37944e709ee8c78d7520df80f8d01cf7f861aae63beeddb6b done
#16 writing layer sha256:5c126ace4b8e4d5e2d1fa6699ac82dddc270a48ac66d40ecca9bbccf7e61d697 done
#16 writing layer sha256:8057d354b41f93a2c1cf01265f97392dbd0c415c8ead5425d90a082c97db2fb7 done
#16 writing layer sha256:bfed4388b8390995898ec1f304e4cce6874d6dd620f4b84dd3b1fb0de36da27a done
#16 writing layer sha256:f74a07ff9c7f30e0525b94e45f4a04ba8130ce9fd8070cd7e8c3bc2b4e9ad810 done
#16 writing config sha256:c2a253a67a918a0511147e5777544935738f87265bb7dcbf5300d697b573b0aa 0.0s done
#16 writing manifest sha256:57e405aaf72e4bd5937ac8e80c39858b7414caec2cc2fc0e1f9d98d6606f31b8 0.0s done
#16 DONE 0.1s

Working build:

+ docker buildx build --builder builder1 --pull --push --progress plain --build-arg AIRSONIC_VER=v10.6.2 --platform linux/amd64 -t mbentley/airsonic:latest -f Dockerfile --cache-from=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache --cache-to=type=registry,ref=registry.casa.mbentley.net/mbentley/airsonic:latest-cache,mode=max .
#1 [internal] booting buildkit
#1 sha256:bd448caf6032bd5a5d77c0fc37ff5cecfdc320c10d188966d0df614b61366592
#1 starting container buildx_buildkit_builder1
#1 starting container buildx_buildkit_builder1 2.7s done
#1 DONE 2.7s

#2 [internal] load build definition from Dockerfile
#2 sha256:8d15bda46382c1246f234725de3207970eedeeee9d9898bb171e5645f0b778a7
#2 transferring dockerfile: 2.27kB done
#2 DONE 0.0s

#3 [internal] load .dockerignore
#3 sha256:3f4f9de50cf45693d066a337c96dfab339bf23c2f5ef8898b6736adafd224959
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [internal] load metadata for docker.io/library/alpine:latest
#4 sha256:d4fb25f5b5c00defc20ce26f2efc4e288de8834ed5aa59dff877b495ba88fda6
#4 DONE 0.6s

#6 [1/8] FROM docker.io/library/alpine:latest@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0
#6 sha256:83cc88488a3bbdd9d2e20ed4b0eb8ecd26a4dff43878c2e68a842fed290ad078
#6 resolve docker.io/library/alpine:latest@sha256:234cb88d3020898631af0ccbbcca9a66ae7306ecd30c9720690858c1b007d2a0 0.0s done
#6 DONE 0.0s

#5 importing cache manifest from registry.casa.mbentley.net/mbentley/airsonic:latest-cache
#5 sha256:54d6ce93e51693820c800f2f73075a6183237f347857e154552181a870bbb9d1
#5 DONE 0.0s

#12 [internal] load build context
#12 sha256:24d567b1f92090557f3d2c271a92fc28093ed628db2a310a00a55b0b94422448
#12 transferring context: 907B done
#12 DONE 0.0s

#8 [3/8] RUN (mkdir /var/airsonic &&  addgroup -g 504 airsonic &&  adduser -h /var/airsonic -D -u 504 -g airsonic -G airsonic -s /sbin/nologin airsonic &&  chown -R airsonic:airsonic /var/airsonic)
#8 sha256:1dd82e7179d413ef03ab329f8e1daf6d9d82624ebb6124f071fd8a3690381720
#8 CACHED

#7 [2/8] RUN (apk --no-cache add ca-certificates ffmpeg ttf-dejavu openjdk8 wget jq)
#7 sha256:8eaba8e869c391b7166657cc0a1455b604737370729a18d94ef373a087941341
#7 CACHED

#9 [4/8] RUN (AIRSONIC_VER="$(wget -q -O - https://api.github.com/repos/airsonic/airsonic/releases/latest | jq -r .tag_name)" &&  if [ "$(echo v10.6.2 | awk -F '.' '{print $1}')" != "v10" ]; then echo "Latest version number is no longer 10"; exit 1; fi &&  wget "https://github.com/airsonic/airsonic/releases/download/v10.6.2/airsonic.war" -O /var/airsonic/airsonic.war &&  chown airsonic:airsonic /var/airsonic/airsonic.war)
#9 sha256:3835982beb295b97e3aa4974aca74b0ba79f245ab2e64d5c62615c58cbf37051
#9 CACHED

#10 [5/8] RUN (mkdir /var/airsonic/transcode &&  ln -s /usr/bin/ffmpeg /var/airsonic/transcode/ffmpeg &&  chown -R airsonic:airsonic /var/airsonic/transcode)
#10 sha256:ad84205011c43d7cd451e5f369174eb417683b646df092e20fd67b7a4f745a5a
#10 CACHED

#11 [6/8] RUN (mkdir /data &&  cd /data &&  mkdir db index16 lucene2 lastfmcache thumbs music Podcast playlists .cache .java &&  touch airsonic.properties rollback.sql &&  cd /var/airsonic &&  ln -s /data/db &&  ln -s /data/index16 &&  ln -s /data/lucene2 &&  ln -s /data/lastfmcache &&  ln -s /data/thumbs &&  ln -s /data/music &&  ln -s /data/Podcast &&  ln -s /data/playlists &&  ln -s /data/.cache &&  ln -s /data/.java &&  ln -s /data/airsonic.properties &&  ln -s /data/rollback.sql &&  chown -R airsonic:airsonic /data)
#11 sha256:537ff7293a632ef34d77a985eca7229badd7d2b9309d5e5e11e78ce6cb790cbf
#11 CACHED

#13 [7/8] COPY entrypoint.sh /entrypoint.sh
#13 sha256:13912f5cdaad79f8c1b2301e80261308ce58310a7153e1bb02bf11d6af685ad3
#13 CACHED

#14 [8/8] WORKDIR /var/airsonic
#14 sha256:3319582f1b3b240ceb7589d54dbcdbcc712d4dfacfdff4eb8ed1d743fce52cff
#14 CACHED

#15 exporting to image
#15 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#15 exporting layers done
#15 exporting manifest sha256:29aa0bb26757325405da60b4aa7d92fa3cf0fb489982ed4c19bc3580ad94ada1 0.0s done
#15 exporting config sha256:2f71e4b4043ae8203965cb91faa008af18fcb2c15286b433c1148d36fb4d4f88 0.0s done
#15 pushing layers
#15 ...

#16 [auth] mbentley/airsonic:pull,push token for registry-1.docker.io
#16 sha256:6f923cb5824dd7970ff88871d551967c6161fbf066ccde63a0e0b8cfaa0e9ae8
#16 DONE 0.0s

#15 exporting to image
#15 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#15 pushing layers 0.7s done
#15 pushing manifest for docker.io/mbentley/airsonic:latest
#15 pushing manifest for docker.io/mbentley/airsonic:latest 0.2s done
#15 DONE 1.0s

#17 exporting cache
#17 sha256:2700d4ef94dee473593c5c614b55b2dedcca7893909811a8f2b48291a1f581e4
#17 preparing build cache for export done
#17 writing layer sha256:47fcdba1db8f6bb2e24cadfbf88957aecd675c89553230b5266ef1876b863ac3 done
#17 writing layer sha256:53380879c22c14c31df822b3976e5f7dc41d082e46dc33b5821183449cdd6be3 done
#17 writing layer sha256:5843afab387455b37944e709ee8c78d7520df80f8d01cf7f861aae63beeddb6b done
#17 writing layer sha256:5c126ace4b8e4d5e2d1fa6699ac82dddc270a48ac66d40ecca9bbccf7e61d697 done
#17 writing layer sha256:8057d354b41f93a2c1cf01265f97392dbd0c415c8ead5425d90a082c97db2fb7 done
#17 writing layer sha256:bfed4388b8390995898ec1f304e4cce6874d6dd620f4b84dd3b1fb0de36da27a done
#17 writing layer sha256:f74a07ff9c7f30e0525b94e45f4a04ba8130ce9fd8070cd7e8c3bc2b4e9ad810 done
#17 writing config sha256:c2a253a67a918a0511147e5777544935738f87265bb7dcbf5300d697b573b0aa done
#17 writing manifest sha256:57e405aaf72e4bd5937ac8e80c39858b7414caec2cc2fc0e1f9d98d6606f31b8 done
#17 DONE 0.0s
@mbentley
Copy link
Author

mbentley commented Jun 24, 2021

I've been trying to track down what is going on from the logs and I believe that I have captured a build where it has problems with debug logging:
builder_out.txt

time="2021-06-23T07:07:18Z" level=debug msg="do request" host=registry.casa.mbentley.net request.header.accept="application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.oci.image.index.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:18Z" level=debug msg=fetch digest="sha256:6aab78d1825b4c15c159fecc62b8eef4fdf0c693a15aace3a605ad44e5e2df0c" mediatype=application/vnd.docker.distribution.manifest.list.v2+json size=1418
time="2021-06-23T07:07:18Z" level=debug msg="fetch response received" host=registry.casa.mbentley.net response.header.content-length=2539 response.header.content-type=application/vnd.oci.image.index.v1+json response.header.date="Wed, 23 Jun 2021 07:07:18 GMT" response.header.docker-content-digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c\"" response.header.x-content-type-options=nosniff response.status="200 OK" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:18Z" level=debug msg=resolved desc.digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" host=registry.casa.mbentley.net
time="2021-06-23T07:07:18Z" level=debug msg="do request" digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" request.header.accept="application/vnd.oci.image.index.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=GET url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c"
time="2021-06-23T07:07:18Z" level=debug msg="fetch response received" digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" response.header.content-length=2539 response.header.content-type=application/vnd.oci.image.index.v1+json response.header.date="Wed, 23 Jun 2021 07:07:18 GMT" response.header.docker-content-digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c\"" response.header.x-content-type-options=nosniff response.status="200 OK" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c"
time="2021-06-23T07:07:18Z" level=debug msg=fetch digest="sha256:f57d1d9861bfd91606b02d40f788c11da6d0156882ca29e7f69c2ccb4fbf45f0" mediatype=application/vnd.docker.distribution.manifest.v2+json size=1150
time="2021-06-23T07:07:18Z" level=debug msg=fetch digest="sha256:df35e78d195807badda7ee058c23bcc4a4b9c75b72a13b87a6ff33d0f91fa6e3" mediatype=application/vnd.docker.container.image.v1+json size=3362
time="2021-06-23T07:07:18Z" level=debug msg="do request" digest="sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a" request.header.accept="application/vnd.buildkit.cacheconfig.v0, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=GET url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a"
time="2021-06-23T07:07:18Z" level=debug msg="fetch response received" digest="sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a" response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=1672 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:18 GMT" response.header.docker-content-digest="sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a\"" response.header.x-content-type-options=nosniff response.status="200 OK" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:868ace8c6579107ce113341db658d6bc75d93c7ac687d6a21381c6000880431a"
time="2021-06-23T07:07:18Z" level=debug msg="reusing ref for local: u9vihwqtto0662rup5cq62dd9"
time="2021-06-23T07:07:18Z" level=debug msg="diffcopy took: 2.223671ms"
time="2021-06-23T07:07:18Z" level=debug msg="saved u9vihwqtto0662rup5cq62dd9 as local.sharedKey:context:context:"
time="2021-06-23T07:07:18Z" level=debug msg="load cache for [5/5] WORKDIR /opt/tplink/EAPController/lib with sha256:2eff54abf99e05203012e344765f1ddc8b536c390e196a5574844ad72918960f"
time="2021-06-23T07:07:19Z" level=warning msg="invalid image config with unaccounted layers"
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=184292534
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json size=6173
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=40312433
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=850
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=949
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=169
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=511
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json request.header.accept="application/vnd.docker.container.image.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=12792 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f479a417ff-ATL response.header.cf-request-id=0ad94aecce000017ffc922c000000001 response.header.connection=keep-alive response.header.content-length=949 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"ae9096e54497bc950017802d8c433ced\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Tue, 08 Jun 2021 22:22:19 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="7WHMOgjQWBej88N+J8qCLME+OvgPkVizQHt0KhAsT6ChLPJCNmBsEl0mZd8J+5UCbjCMuV/PTfg=" response.header.x-amz-request-id=T2KB2RFNQGKJRKT0 response.header.x-amz-version-id=A0G.e_QwxTR4DpkYEexuYxx2uhrDAtsv response.status="200 OK" size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184317 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f4ca4717ff-ATL response.header.cf-request-id=0ad94aecfa000017ff86137000000001 response.header.connection=keep-alive response.header.content-length=511 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"c9c445daf73d19cd9e2f49a46e979847\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="Lu4EwPGfBYg9XZ3Gcz+l+flwUdioFuYVMhZ+izXOe8VvN8Jl5KcZlsVPRS/CGhYJJYKpUpVJbvk=" response.header.x-amz-request-id=5Q23WV5ETC9JJQEJ response.header.x-amz-version-id=kr100x6ciJ.v_gdcQV6zoIxoE_jv_5Yb response.status="200 OK" size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json response.header.content-length=157 response.header.content-type=application/json response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.docker-distribution-api-version=registry/2.0 response.header.strict-transport-security="max-age=31536000" response.status="404 Not Found" size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json request.header.user-agent=containerd/1.5.2+unknown request.method=POST size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/uploads/"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=18560 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f51adc17ff-ATL response.header.cf-request-id=0ad94aed2f000017ffb1b7e000000001 response.header.connection=keep-alive response.header.content-length=850 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"4f6d27829a5a8848dc4a345f16584a9d\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="zbW3msFftJaH0X5HG612RVtW6iCJZ74OkAS6ADAZGFADvEeeVBFXTU8pxqZR6i0L4FevsmpyHXY=" response.header.x-amz-request-id=5Q20PG1ZAN3KEE7F response.header.x-amz-version-id=jzwOX7X.RDtmxFGniUjS9KcuwusAfpnf response.status="200 OK" size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f47efaf339-ATL response.header.cf-request-id=0ad94aeccc0000f339e4b62000000001 response.header.connection=keep-alive response.header.content-length=184292534 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"8cffc52c9abbe367a0ab1a767e86646d-6\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Tue, 22 Jun 2021 02:51:43 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="STL6mrG8aI64INF/k7s6fngTjQnIuZKYAZiqEyXGAwJV564a2GPWXtI1s0ndIooVOhE4TRBNTY4=" response.header.x-amz-request-id=N06SPJEQQSVF8MDH response.header.x-amz-version-id=VKsONpj1xB0iUgFo86Gk9oAbELTQ7I8j response.status="200 OK" size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184317 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f54b3617ff-ATL response.header.cf-request-id=0ad94aed50000017ffec8ce000000001 response.header.connection=keep-alive response.header.content-length=40312433 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"6988f4beb12987d787991dda34637048-2\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:42 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="16MBeRly3yltgfcv42Z+bTGtIxiBwZ5kMm5MaxFmvH92Zc/tAdPu5qUJxCBZ2heqRJq4Q52nE7c=" response.header.x-amz-request-id=CC85WV630G266XWQ response.header.x-amz-version-id=v_D4kFqDj04FLMiA0Ek52VX64v7_rpHk response.status="200 OK" size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184312 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0f56a021035-ATL response.header.cf-request-id=0ad94aed5d00001035bfa24000000001 response.header.connection=keep-alive response.header.content-length=169 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.etag="\"1e8687c8dd0c8f6a82515154f0a87757\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:19 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="vVudmtZ2sCQfOmVaPVk0D8D95tVsju9ZIY45v1NcGcodUn8Oj6aiDaUE+Io6yNAN3WM/HOP+RDk=" response.header.x-amz-request-id=5Q270MYTS1PQB3MQ response.header.x-amz-version-id=TBf6wQhJNo9p71SbmGiB4VApVsgguVzv response.status="200 OK" size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.docker-distribution-api-version=registry/2.0 response.header.docker-upload-uuid=da6c5210-a93a-4ab1-a68a-dd375743e65e response.header.location="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/uploads/da6c5210-a93a-4ab1-a68a-dd375743e65e?_state=04cH2mRVJDE7XJial7H04GhdXXUAnxXbJp7qrvHoIcp7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6ImRhNmM1MjEwLWE5M2EtNGFiMS1hNjhhLWRkMzc1NzQzZTY1ZSIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoxOS4yMzExNTM4NTJaIn0%3D" response.header.range=0-0 response.header.strict-transport-security="max-age=31536000" response.status="202 Accepted" size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/uploads/"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json request.header.content-type=application/octet-stream request.header.user-agent=containerd/1.5.2+unknown request.method=PUT size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/uploads/da6c5210-a93a-4ab1-a68a-dd375743e65e?_state=04cH2mRVJDE7XJial7H04GhdXXUAnxXbJp7qrvHoIcp7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6ImRhNmM1MjEwLWE5M2EtNGFiMS1hNjhhLWRkMzc1NzQzZTY1ZSIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoxOS4yMzExNTM4NTJaIn0%3D&digest=sha256%3A0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:19Z" level=debug msg="fetch response received" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:19 GMT" response.header.docker-content-digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" response.header.docker-distribution-api-version=registry/2.0 response.header.location="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" response.header.strict-transport-security="max-age=31536000" response.status="201 Created" size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/uploads/da6c5210-a93a-4ab1-a68a-dd375743e65e?_state=04cH2mRVJDE7XJial7H04GhdXXUAnxXbJp7qrvHoIcp7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6ImRhNmM1MjEwLWE5M2EtNGFiMS1hNjhhLWRkMzc1NzQzZTY1ZSIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoxOS4yMzExNTM4NTJaIn0%3D&digest=sha256%3A0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:19Z" level=debug msg=push digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json size=1570
time="2021-06-23T07:07:19Z" level=debug msg="checking and pushing to" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/4.3-armv7l"
time="2021-06-23T07:07:19Z" level=debug msg="do request" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.accept="application/vnd.docker.distribution.manifest.v2+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/4.3-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=1778 response.header.content-type=application/vnd.docker.distribution.manifest.v2+json response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:32dcc37839232302adca5f25f31476253bd58415080da89a31c535d7f1101b3e" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:32dcc37839232302adca5f25f31476253bd58415080da89a31c535d7f1101b3e\"" response.header.ratelimit-limit="200;w=21600" response.header.ratelimit-remaining="195;w=21600" response.header.strict-transport-security="max-age=31536000" response.status="200 OK" size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/4.3-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.content-type=application/vnd.docker.distribution.manifest.v2+json request.header.user-agent=containerd/1.5.2+unknown request.method=PUT size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/4.3-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" response.header.docker-distribution-api-version=registry/2.0 response.header.location="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" response.header.strict-transport-security="max-age=31536000" response.status="201 Created" size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/4.3-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=184292534
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=511
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=850
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=949
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=169
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json size=6173
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json request.header.accept="application/vnd.docker.container.image.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=40312433
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip request.header.accept="application/vnd.docker.image.rootfs.diff.tar.gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184318 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fbadbd17ff-ATL response.header.cf-request-id=0ad94af14d000017ffca16a000000001 response.header.connection=keep-alive response.header.content-length=511 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"c9c445daf73d19cd9e2f49a46e979847\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="Lu4EwPGfBYg9XZ3Gcz+l+flwUdioFuYVMhZ+izXOe8VvN8Jl5KcZlsVPRS/CGhYJJYKpUpVJbvk=" response.header.x-amz-request-id=5Q23WV5ETC9JJQEJ response.header.x-amz-version-id=kr100x6ciJ.v_gdcQV6zoIxoE_jv_5Yb response.status="200 OK" size=511 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=1 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fbbf90f339-ATL response.header.cf-request-id=0ad94af1530000f3392ba04000000001 response.header.connection=keep-alive response.header.content-length=184292534 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"8cffc52c9abbe367a0ab1a767e86646d-6\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Tue, 22 Jun 2021 02:51:43 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="STL6mrG8aI64INF/k7s6fngTjQnIuZKYAZiqEyXGAwJV564a2GPWXtI1s0ndIooVOhE4TRBNTY4=" response.header.x-amz-request-id=N06SPJEQQSVF8MDH response.header.x-amz-version-id=VKsONpj1xB0iUgFo86Gk9oAbELTQ7I8j response.status="200 OK" size=184292534 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184318 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fbfe2f17ff-ATL response.header.cf-request-id=0ad94af178000017ffbc3a9000000001 response.header.connection=keep-alive response.header.content-length=40312433 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"6988f4beb12987d787991dda34637048-2\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:42 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="16MBeRly3yltgfcv42Z+bTGtIxiBwZ5kMm5MaxFmvH92Zc/tAdPu5qUJxCBZ2heqRJq4Q52nE7c=" response.header.x-amz-request-id=CC85WV630G266XWQ response.header.x-amz-version-id=v_D4kFqDj04FLMiA0Ek52VX64v7_rpHk response.status="200 OK" size=40312433 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=18561 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fc3ea417ff-ATL response.header.cf-request-id=0ad94af1a4000017ffa50e1000000001 response.header.connection=keep-alive response.header.content-length=850 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"4f6d27829a5a8848dc4a345f16584a9d\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="zbW3msFftJaH0X5HG612RVtW6iCJZ74OkAS6ADAZGFADvEeeVBFXTU8pxqZR6i0L4FevsmpyHXY=" response.header.x-amz-request-id=5Q20PG1ZAN3KEE7F response.header.x-amz-version-id=jzwOX7X.RDtmxFGniUjS9KcuwusAfpnf response.status="200 OK" size=850 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=12793 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fc6f0e17ff-ATL response.header.cf-request-id=0ad94af1c5000017ff991c3000000001 response.header.connection=keep-alive response.header.content-length=949 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"ae9096e54497bc950017802d8c433ced\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Tue, 08 Jun 2021 22:22:19 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="7WHMOgjQWBej88N+J8qCLME+OvgPkVizQHt0KhAsT6ChLPJCNmBsEl0mZd8J+5UCbjCMuV/PTfg=" response.header.x-amz-request-id=T2KB2RFNQGKJRKT0 response.header.x-amz-version-id=A0G.e_QwxTR4DpkYEexuYxx2uhrDAtsv response.status="200 OK" size=949 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.docker.image.rootfs.diff.tar.gzip response.header.accept-ranges=bytes response.header.age=184313 response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=HIT response.header.cf-ray=663be0fcbf8717ff-ATL response.header.cf-request-id=0ad94af1f0000017ffb801e000000001 response.header.connection=keep-alive response.header.content-length=169 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"1e8687c8dd0c8f6a82515154f0a87757\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Thu, 17 Jun 2021 23:36:34 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="vVudmtZ2sCQfOmVaPVk0D8D95tVsju9ZIY45v1NcGcodUn8Oj6aiDaUE+Io6yNAN3WM/HOP+RDk=" response.header.x-amz-request-id=5Q270MYTS1PQB3MQ response.header.x-amz-version-id=TBf6wQhJNo9p71SbmGiB4VApVsgguVzv response.status="200 OK" size=169 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482" mediatype=application/vnd.docker.container.image.v1+json response.header.accept-ranges=bytes response.header.cache-control="public, max-age=14400" response.header.cf-cache-status=MISS response.header.cf-ray=663be0fc0feff339-ATL response.header.cf-request-id=0ad94af1850000f339058be000000001 response.header.connection=keep-alive response.header.content-length=6173 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.etag="\"59e2b30f2b80a4593550cbd574f74a31\"" response.header.expect-ct="max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"" response.header.expires="Wed, 23 Jun 2021 11:07:20 GMT" response.header.last-modified="Wed, 23 Jun 2021 07:07:20 GMT" response.header.server=cloudflare response.header.vary=Accept-Encoding response.header.x-amz-id-2="RQttWkdAslqzicVJKdaHHK/0wMnmvUsIr2C9ubRmczTUOkwYN6Rpwrt0ouXHBZOnc2ZddOhlBeI=" response.header.x-amz-request-id=8FXJKKVNKNPHCKF1 response.header.x-amz-version-id=KC4e.PaWd0SSmjPe4JHy9EC86cPZCDin response.status="200 OK" size=6173 url="https://registry-1.docker.io/v2/mbentley/omada-controller/blobs/sha256:0a09e2786ba6dde308248059eddcab43ce7cbd382f303621b34ea3d732d42482"
time="2021-06-23T07:07:20Z" level=debug msg=push digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json size=1570
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/latest-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.accept="application/vnd.docker.distribution.manifest.v2+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/latest-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=1778 response.header.content-type=application/vnd.docker.distribution.manifest.v2+json response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:32dcc37839232302adca5f25f31476253bd58415080da89a31c535d7f1101b3e" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:32dcc37839232302adca5f25f31476253bd58415080da89a31c535d7f1101b3e\"" response.header.ratelimit-limit="200;w=21600" response.header.ratelimit-remaining="195;w=21600" response.header.strict-transport-security="max-age=31536000" response.status="200 OK" size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/latest-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.content-type=application/vnd.docker.distribution.manifest.v2+json request.header.user-agent=containerd/1.5.2+unknown request.method=PUT size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/latest-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" response.header.docker-distribution-api-version=registry/2.0 response.header.location="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d" response.header.strict-transport-security="max-age=31536000" response.status="201 Created" size=1570 url="https://registry-1.docker.io/v2/mbentley/omada-controller/manifests/latest-armv7l"
time="2021-06-23T07:07:20Z" level=debug msg=fetch digest="sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=1918
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=1918 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=1918 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=1918 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=1918 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:4cf1ff4fc0c6d1d91beb4f3889f10c2a95b0afb3a9de12c877de952155627c0f"
time="2021-06-23T07:07:20Z" level=debug msg=fetch digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=850
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=850 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=850 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=850 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=850 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:54f4e7436b523284825c35db6cb48a7c20c8d5388815695277126f528b2b4537"
time="2021-06-23T07:07:20Z" level=debug msg=fetch digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=184292534
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=184292534 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=184292534 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg="fetch response received" digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=184292534 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:20 GMT" response.header.docker-content-digest="sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=184292534 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:5c2ee5fefda0565d952161aaff0c24e2b945d4e620db9daf61d8473f99eebfe2"
time="2021-06-23T07:07:20Z" level=debug msg=fetch digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=949
time="2021-06-23T07:07:20Z" level=debug msg="checking and pushing to" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=949 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:20Z" level=debug msg="do request" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=949 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=949 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=949 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:859688b1f4a3b55fb268999ac651fa105675adee85268db5ed865235f547cc79"
time="2021-06-23T07:07:21Z" level=debug msg=fetch digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=511
time="2021-06-23T07:07:21Z" level=debug msg="checking and pushing to" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=511 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:21Z" level=debug msg="do request" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=511 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=511 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=511 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:ad5c9e5711d0203aa41ec7750be25bd3bdd00b90388fde5a0d603523354eff4e"
time="2021-06-23T07:07:21Z" level=debug msg=fetch digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=40312433
time="2021-06-23T07:07:21Z" level=debug msg="checking and pushing to" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=40312433 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:21Z" level=debug msg="do request" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=40312433 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=40312433 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=40312433 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:bee35c084ef2789f844b87c031d55b07186255622024a15b526838f71500485a"
time="2021-06-23T07:07:21Z" level=debug msg=fetch digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=169
time="2021-06-23T07:07:21Z" level=debug msg="checking and pushing to" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.oci.image.layer.v1.tar+gzip size=169 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:21Z" level=debug msg="do request" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.oci.image.layer.v1.tar+gzip request.header.accept="application/vnd.oci.image.layer.v1.tar+gzip, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD size=169 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" mediatype=application/vnd.oci.image.layer.v1.tar+gzip response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=169 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=169 url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:c0d1eba314dc97cbd3e70e1b857a42881405eefe61a235d56722dbf0df809d73"
time="2021-06-23T07:07:21Z" level=warning msg="reference for unknown type: application/vnd.buildkit.cacheconfig.v0"
time="2021-06-23T07:07:21Z" level=debug msg="checking and pushing to" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0"
time="2021-06-23T07:07:21Z" level=debug msg="do request" request.header.accept="application/vnd.buildkit.cacheconfig.v0, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" response.header.content-length=157 response.header.content-type="application/json; charset=utf-8" response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-distribution-api-version=registry/2.0 response.header.x-content-type-options=nosniff response.status="404 Not Found" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0"
time="2021-06-23T07:07:21Z" level=debug msg="do request" request.header.user-agent=containerd/1.5.2+unknown request.method=POST url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/uploads/"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-distribution-api-version=registry/2.0 response.header.docker-upload-uuid=9597a4a6-c057-4cc9-b320-755c45120e73 response.header.location="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/uploads/9597a4a6-c057-4cc9-b320-755c45120e73?_state=3N_LcTGS3T4gKATojBeGAXjHb5UuWYAhERB4uUVArMR7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6Ijk1OTdhNGE2LWMwNTctNGNjOS1iMzIwLTc1NWM0NTEyMGU3MyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoyMS4wMTYwMTkyMjNaIn0%3D" response.header.range=0-0 response.header.x-content-type-options=nosniff response.status="202 Accepted" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/uploads/"
time="2021-06-23T07:07:21Z" level=debug msg="do request" request.header.content-type=application/octet-stream request.header.user-agent=containerd/1.5.2+unknown request.method=PUT url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/uploads/9597a4a6-c057-4cc9-b320-755c45120e73?_state=3N_LcTGS3T4gKATojBeGAXjHb5UuWYAhERB4uUVArMR7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6Ijk1OTdhNGE2LWMwNTctNGNjOS1iMzIwLTc1NWM0NTEyMGU3MyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoyMS4wMTYwMTkyMjNaIn0%3D&digest=sha256%3A265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0" response.header.docker-distribution-api-version=registry/2.0 response.header.location="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/sha256:265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0" response.header.x-content-type-options=nosniff response.status="201 Created" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/blobs/uploads/9597a4a6-c057-4cc9-b320-755c45120e73?_state=3N_LcTGS3T4gKATojBeGAXjHb5UuWYAhERB4uUVArMR7Ik5hbWUiOiJtYmVudGxleS9vbWFkYS1jb250cm9sbGVyIiwiVVVJRCI6Ijk1OTdhNGE2LWMwNTctNGNjOS1iMzIwLTc1NWM0NTEyMGU3MyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wNi0yM1QwNzowNzoyMS4wMTYwMTkyMjNaIn0%3D&digest=sha256%3A265a7fbd257218403004ddfa8388192d56395aca85b976a0bdffc99422654ef0"
time="2021-06-23T07:07:21Z" level=debug msg="checking and pushing to" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:21Z" level=debug msg="do request" request.header.accept="application/vnd.oci.image.index.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" response.header.content-length=2539 response.header.content-type=application/vnd.oci.image.index.v1+json response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:a4233b995351edf05e7c6efb3ceee0b491a49a7d4f642c75b21d6dd8cf3e637c\"" response.header.x-content-type-options=nosniff response.status="200 OK" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:21Z" level=debug msg="do request" request.header.content-type=application/vnd.oci.image.index.v1+json request.header.user-agent=containerd/1.5.2+unknown request.method=PUT url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:21Z" level=debug msg="fetch response received" response.header.content-length=0 response.header.date="Wed, 23 Jun 2021 07:07:21 GMT" response.header.docker-content-digest="sha256:e09dfbc81c3a48c492a933d2e9a9833d96b200b405b6ad1ab063e82e2e7dafd5" response.header.docker-distribution-api-version=registry/2.0 response.header.location="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/sha256:e09dfbc81c3a48c492a933d2e9a9833d96b200b405b6ad1ab063e82e2e7dafd5" response.header.x-content-type-options=nosniff response.status="201 Created" url="https://registry.casa.mbentley.net/v2/mbentley/omada-controller/manifests/4.3-armv7l-cache"
time="2021-06-23T07:07:21Z" level=debug msg="session finished: <nil>"
time="2021-06-23T07:07:21Z" level=debug msg="session started"
time="2021-06-23T07:07:22Z" level=debug msg="reusing ref for local: 6q55sn38mts9hsi2z5ziqhxs0"
time="2021-06-23T07:07:22Z" level=debug msg="diffcopy took: 4.526028ms"
time="2021-06-23T07:07:22Z" level=debug msg="saved 6q55sn38mts9hsi2z5ziqhxs0 as local.sharedKey:dockerfile:dockerfile:"
time="2021-06-23T07:07:22Z" level=debug msg="reusing ref for local: n9sy7qi4kc4ty4hlanij8nb29"
time="2021-06-23T07:07:22Z" level=debug msg="diffcopy took: 3.354888ms"
time="2021-06-23T07:07:22Z" level=debug msg="saved n9sy7qi4kc4ty4hlanij8nb29 as local.sharedKey:context:context-.dockerignore:"
time="2021-06-23T07:07:22Z" level=debug msg=resolving host=registry-mirror.casa.mbentley.net
time="2021-06-23T07:07:22Z" level=debug msg="do request" host=registry-mirror.casa.mbentley.net request.header.accept="application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.oci.image.index.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=HEAD url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/manifests/18.04?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg="fetch response received" host=registry-mirror.casa.mbentley.net response.header.content-length=1412 response.header.content-type=application/vnd.docker.distribution.manifest.list.v2+json response.header.date="Wed, 23 Jun 2021 07:07:22 GMT" response.header.docker-content-digest="sha256:139b3846cee2e63de9ced83cee7023a2d95763ee2573e5b0ab6dea9dfbd4db8f" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:139b3846cee2e63de9ced83cee7023a2d95763ee2573e5b0ab6dea9dfbd4db8f\"" response.header.x-content-type-options=nosniff response.status="200 OK" url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/manifests/18.04?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg=resolved desc.digest="sha256:139b3846cee2e63de9ced83cee7023a2d95763ee2573e5b0ab6dea9dfbd4db8f" host=registry-mirror.casa.mbentley.net
time="2021-06-23T07:07:22Z" level=debug msg=fetch digest="sha256:139b3846cee2e63de9ced83cee7023a2d95763ee2573e5b0ab6dea9dfbd4db8f" mediatype=application/vnd.docker.distribution.manifest.list.v2+json size=1412
time="2021-06-23T07:07:22Z" level=debug msg=fetch digest="sha256:c60266b67f58fafc30703315f617a8fcccaffc48ef5534ca5f67a9ba3aceb3b8" mediatype=application/vnd.docker.distribution.manifest.v2+json size=529
time="2021-06-23T07:07:22Z" level=debug msg=fetch digest="sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7" mediatype=application/vnd.docker.distribution.manifest.v2+json size=529
time="2021-06-23T07:07:22Z" level=debug msg=fetch digest="sha256:86d265393168783194e0a2d0e43b937bfd3f42fe10da20a90ac08656db453995" mediatype=application/vnd.docker.container.image.v1+json size=1463
time="2021-06-23T07:07:22Z" level=debug msg="do request" digest="sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7" mediatype=application/vnd.docker.distribution.manifest.v2+json request.header.accept="application/vnd.docker.distribution.manifest.v2+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=GET size=529 url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/manifests/sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg="fetch response received" digest="sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7" mediatype=application/vnd.docker.distribution.manifest.v2+json response.header.content-length=529 response.header.content-type=application/vnd.docker.distribution.manifest.v2+json response.header.date="Wed, 23 Jun 2021 07:07:22 GMT" response.header.docker-content-digest="sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=529 url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/manifests/sha256:d2bb498b40f3c40cb11963f63e948c15222c43587b35296389b67e3cbbcd2bb7?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg=fetch digest="sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241" mediatype=application/vnd.docker.container.image.v1+json size=1461
time="2021-06-23T07:07:22Z" level=debug msg="do request" digest="sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241" mediatype=application/vnd.docker.container.image.v1+json request.header.accept="application/vnd.docker.container.image.v1+json, */*" request.header.user-agent=containerd/1.5.2+unknown request.method=GET size=1461 url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/blobs/sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg="fetch response received" digest="sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241" mediatype=application/vnd.docker.container.image.v1+json response.header.accept-ranges=bytes response.header.cache-control="max-age=31536000" response.header.content-length=1461 response.header.content-type=application/octet-stream response.header.date="Wed, 23 Jun 2021 07:07:22 GMT" response.header.docker-content-digest="sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241" response.header.docker-distribution-api-version=registry/2.0 response.header.etag="\"sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241\"" response.header.x-content-type-options=nosniff response.status="200 OK" size=1461 url="https://registry-mirror.casa.mbentley.net/v2/library/ubuntu/blobs/sha256:b5ceeb7128a1ec71ed86e1b0da63ca87456824458e67ca4f688a12c061964241?ns=docker.io"
time="2021-06-23T07:07:22Z" level=debug msg=resolving host=registry.casa.mbentley.net

It seems like every build I do, I get the "reference for unknown type: application/vnd.buildkit.cacheconfig.v0" warning and occasionally "invalid image config with unaccounted layers" but I am not sure that specifically has anything to do with the problem I am seeing. Looking at the above log output, I am not sure I see any smoking gun either so I am not exactly sure what's happening. I do know that the image mbentley/omada-controller:4.3-armv7l@sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d does show as an image that has the same issue though as copying over the entrypoint shouldn't be 0B:

$ docker history mbentley/omada-controller:4.3-armv7l@sha256:0bce605f09a20b0d702754c22aeb3f99438db09482fbe5b2fb697230d0cabe6d
IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
0a09e2786ba6   2 days ago   CMD ["/usr/bin/java" "-server" "-Xms128m" "-…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ENTRYPOINT ["/entrypoint.sh"]                   0B        buildkit.dockerfile.v0
<missing>      2 days ago   VOLUME [/opt/tplink/EAPController/data /opt/…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   HEALTHCHECK &{["CMD-SHELL" "/healthcheck.sh"…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   EXPOSE map[27001/udp:{} 27002/tcp:{} 29810/u…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   WORKDIR /opt/tplink/EAPController/lib           0B        buildkit.dockerfile.v0
<missing>      2 days ago   COPY entrypoint-4.x.sh /entrypoint.sh # buil…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   RUN |4 OMADA_VER=4.3.5 OMADA_TAR=Omada_SDN_C…   315MB     buildkit.dockerfile.v0
<missing>      2 days ago   COPY install.sh healthcheck.sh / # buildkit     1.72kB    buildkit.dockerfile.v0
<missing>      2 days ago   ARG ARCH=amd64                                  0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_URL=https://static.tp-link.com/202…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_TAR=Omada_SDN_Controller_v4.3.5_li…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_VER=4.3.5                             0B        buildkit.dockerfile.v0
<missing>      2 days ago   LABEL maintainer=Matt Bentley <mbentley@mben…   0B        buildkit.dockerfile.v0
<missing>      6 days ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      6 days ago   /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B
<missing>      6 days ago   /bin/sh -c rm -rf /var/lib/apt/lists/*          0B
<missing>      6 days ago   /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B
<missing>      6 days ago   /bin/sh -c #(nop) ADD file:ef24ce1c15acdd071…   106MB

What it should be:

$ docker history mbentley/omada-controller:4.3-armv7l@sha256:32dcc37839232302adca5f25f31476253bd58415080da89a31c535d7f1101b3e
IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
eee41e1f94f9   2 days ago   CMD ["/usr/bin/java" "-server" "-Xms128m" "-…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ENTRYPOINT ["/entrypoint.sh"]                   0B        buildkit.dockerfile.v0
<missing>      2 days ago   VOLUME [/opt/tplink/EAPController/data /opt/…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   HEALTHCHECK &{["CMD-SHELL" "/healthcheck.sh"…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   EXPOSE map[27001/udp:{} 27002/tcp:{} 29810/u…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   WORKDIR /opt/tplink/EAPController/lib           0B        buildkit.dockerfile.v0
<missing>      2 days ago   COPY entrypoint-4.x.sh /entrypoint.sh # buil…   4.97kB    buildkit.dockerfile.v0
<missing>      2 days ago   RUN |4 OMADA_VER=4.3.5 OMADA_TAR=Omada_SDN_C…   315MB     buildkit.dockerfile.v0
<missing>      2 days ago   COPY install.sh healthcheck.sh / # buildkit     1.72kB    buildkit.dockerfile.v0
<missing>      2 days ago   ARG ARCH=amd64                                  0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_URL=https://static.tp-link.com/202…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_TAR=Omada_SDN_Controller_v4.3.5_li…   0B        buildkit.dockerfile.v0
<missing>      2 days ago   ARG OMADA_VER=4.3.5                             0B        buildkit.dockerfile.v0
<missing>      2 days ago   LABEL maintainer=Matt Bentley <mbentley@mben…   0B        buildkit.dockerfile.v0
<missing>      6 days ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      6 days ago   /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B
<missing>      6 days ago   /bin/sh -c rm -rf /var/lib/apt/lists/*          0B
<missing>      6 days ago   /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B
<missing>      6 days ago   /bin/sh -c #(nop) ADD file:ef24ce1c15acdd071…   106MB

@tonistiigi
Copy link
Member

Do you have a runnable reproducer. I see you have a repo with code but don't see the exact order of commands that would reproduce this.

@mbentley
Copy link
Author

Thanks for the reply. I was spending this morning trying to get a way to reproduce this and have not yet figured out how to do so. It doesn't seem to have anything to do with specific commands or files in a build as I've seen it happen with different builds of two completely different applications and different layers. I've seen it happen with both RUN and COPY layers.

I'll keep trying to see what I might be able to do to reproduce this. I was also curious if there was anything else I should be doing to try to capture the right information. I've added --debug to the buildkit flags but I wasn't sure if there was anything else I should be doing to make sure I can capture any relevant info.

@tonistiigi
Copy link
Member

My hunch is that this has something to do with RUN commands creating empty layers that get optimized out in the cache. There is a known issue that in some cases this might cause history go out of sync, but I'm not aware of any case where the actual layer would get lost. I don't really have a solution for that problem and I think we need to remove the empty layers removal optimization.

@tonistiigi
Copy link
Member

There are no special "cache debug" options atm. without code modification.

@mbentley
Copy link
Author

Interesting. Well thanks for the insights into a possibly why it could be happening. I hadn't tried to look further into a previous build's output where it would have pushed the cache and inspected the specific image cache that is getting pushed to my registry for anything that sticks out.

Unfortunately I am not doing so well at reproducing the issue. I've tried all sort of various combinations of existing builder, existing builder with builder cache cleared and creating builders from scratch and looping through on builds. I think I've probably built this image about 1000 times 😄 There doesn't seem to be any real reason or trigger as to why it happens as far as I can tell.

If you'd rather I close this, that's fine. I'll just keep looking to see if there is anything I can do to try to figure out what is going on and how I can trigger it.

@mbentley
Copy link
Author

@tonistiigi - any chance you know approximately when that sort of behavior might have been introduced? I was chatting with a former coworker and he had been using buildkit 0.7.1 so I tried that out and I have currently built 80 images via my CI five times over without the issue coming up which is more than when I was running 0.8.3 it felt like but I just added a script to try to detect these sort of issues today after each build. I see a number of mentions of cache enhancements throughout the history; maybe most significantly in 0.8.0 and above but I was hoping that I might be able to narrow it down to some specific version(s) without having to step through each release to figure out where the issue might have been introduced.

@Patrick-Remy
Copy link

Patrick-Remy commented Jun 28, 2021

Sounds really like the problem I described in #1980 (comment) that commit dda009a broke it, also needed to downgrade to 0.7

I would really appreciate if the behavior is changed in the next Bugfix release, as it is critical if those images were tried to deployed on prod. We wrote test scripts to prevent this.

@tonistiigi
Copy link
Member

@Patrick-Remy We need a reproducer before anything can be concluded from this. If you have one please post it.

@Patrick-Remy
Copy link

@tonistiigi
Copy link
Member

@Patrick-Remy Tried to run in both with v0.8.1 and v0.8.3 but doesn't look like it is doing anything weird for me. Logs https://gist.github.com/tonistiigi/f135e38d25d0d204985d9659f19888ed

@Patrick-Remy
Copy link

Patrick-Remy commented Jul 1, 2021

I just could simplify the setup massively, based on @mbentley's provided repo. I updated my repo https://github.com/Patrick-Remy/buildkit-missing-layer-repro. The build-script.sh now finishes in a minute and I could reproduce it on several machines. Please give it a second try.

@mbentley
Copy link
Author

mbentley commented Jul 2, 2021

Nice, thanks @Patrick-Remy! I've been able to use your repro myself on Docker for Mac and it takes anywhere from 10-30 seconds fairly reliably to get it to reproduce the issue.

Just to add a quick note, I did test a number of versions with your script to reproduce it (v0.8.3 v0.8.2 v0.8.1 v0.8.0 v0.7.2 v0.7.1) and found that the issue does first start appearing as of 0.8.0.

@tonistiigi
Copy link
Member

I can confirm that I seem to be able to repro with the latest version.

@tonistiigi tonistiigi added this to the v0.9.0 milestone Jul 7, 2021
@Patrick-Remy
Copy link

Just to add a quick note, I did test a number of versions with your script to reproduce it (v0.8.3 v0.8.2 v0.8.1 v0.8.0 v0.7.2 v0.7.1) and found that the issue does first start appearing as of 0.8.0.

Yes, as I wrote in the README I already debugged it to be caused by this commit (I built versions myself for commits between 0.8.0 and 0.7.2): dda009a

I can confirm that I seem to be able to repro with the latest version.

That's great! I look forward that you will find the possible bug in the implementation ;)

@tonistiigi
Copy link
Member

I made one PR regarding the repro. #2261 It fixes the repro but obviously is not the main issue here. This has left me quite puzzled how changing trivial things in the repro changes the behavior. The 1 and 2 caches contain identical files but it does not work if 2 does not run. Even if I clear the local state and now 2 should have no effect it still changes behavior. I'll continue to look into this but we have hit the deadline with the release and need to move on there.

@crazy-max crazy-max modified the milestones: v0.9.0, v0.9.1 Jul 28, 2021
@Patrick-Remy
Copy link

Did you have any time to investigate this another time? We are still freezed to v0.7.2 due to this bug.

jgiannuzzi added a commit to jgiannuzzi/buildkit that referenced this issue Sep 16, 2021
jgiannuzzi added a commit to jgiannuzzi/buildkit that referenced this issue Sep 16, 2021
@jgiannuzzi
Copy link
Contributor

I have investigated this issue further and made another repro, based on @Patrick-Remy's excellent work. It does not need to import 2 identical caches to make the issue appear, and has an even shorter Dockerfile.

I summarised my understanding of the issue in the repro README (mind you, I have never looked at the buildkit codebase before, so this might be wrong) and copied it below for convenience.

Why is this broken?

Let's take a look at the Dockerfile provided in this repository:

FROM alpine:latest

# create a layer (empty or not)
RUN echo 1

# create a layer that also depends on the context
COPY repro.txt /

# create an empty layer
RUN echo 2

When importing the cache of a run that has empty layers removed, some vertexes will point to the same result, e.g. COPY repro.txt / and RUN echo 2.

In cache.remotecache.v1.(*cacheResultStorage).LoadWithParents, we try to load a cache result with its parents. We start by looking up the corresponding item in a map, and because there are 2 possible values, it will randomly return one or the other.

If the 'wrong' item gets used (COPY repro.txt / in our example), then only a partial list of results will be loaded. They get returned to solver.(*cacheManager).LoadWithParents, which will filter them and end up with the same partial list of results.

Those will eventually be saved in the buildkitd cache in solver.(*combinedCacheManager).Load, thus missing the entry for RUN echo 2.

During a second run with the same cache, but this time with a partially populated buildkitd cache, if the 'wrong' item gets used again in cache.remotecache.v1.(*cacheResultStorage).LoadWithParents, and the partial list of results is loaded and returned to solver.(*cacheManager).LoadWithParents, something different from the previous run might happen.

During the result filtering, results originating from both caches could be walked, and the result for RUN echo 1 could end up being returned as the first element of the list, instead of the one for COPY repro.txt / or RUN echo 2.

Unfortunately, solver.(*combinedCacheManager).Load assumes that the first result is the parent and will return that one, which eventually results in an image missing a layer!

jgiannuzzi added a commit to jgiannuzzi/buildkit that referenced this issue Sep 21, 2021
jgiannuzzi added a commit to jgiannuzzi/buildkit that referenced this issue Sep 21, 2021
Signed-off-by: Jonathan Giannuzzi <[email protected]>
@mbentley
Copy link
Author

I've had the chance to do a couple re-builds of all 90 of my images that I push to Docker Hub using buildkit from your PR @jgiannuzzi and while it is a small sample size of two full runs, I am not seeing any zero bytes layers being detected 🤞

tonistiigi pushed a commit to tonistiigi/buildkit that referenced this issue Oct 1, 2021
Signed-off-by: Jonathan Giannuzzi <[email protected]>
(cherry picked from commit 2c540bd)
alexcb added a commit to earthly/buildkit-old-fork that referenced this issue Oct 26, 2021
* dockerfile: fix git version detection

Signed-off-by: Tonis Tiigi <[email protected]>

* Add support for heredocs with ONBUILD

Signed-off-by: Justin Chadwell <[email protected]>

* dockerfile: use none differ for dockerfile/dockerignore

This avoids wrong metadata matches on small files

Signed-off-by: Tonis Tiigi <[email protected]>

* progressui: print logs for failed step as summary in plain mode

Signed-off-by: Tonis Tiigi <[email protected]>

* grpcerrors: avoid rpc error wrapping in error messages

Signed-off-by: Tonis Tiigi <[email protected]>

* exec: improve error message on exec errors

Signed-off-by: Tonis Tiigi <[email protected]>

* Improve heredoc parsing to allow more generic words

Previously, heredoc names were restricted to simple alphanumeric
strings. However, heredocs should support much more complex use-cases,
including quoting anywhere, as well as allowing special symbols like `.`
for easily expressing file extensions.

This patch adds support for these more complex cases, by using the shell
lexer to parse each heredoc name. Additionally, we include improvements
to the lexer to optionally preserve escape tokens to avoid problems when
lexing words that have already been lexed before.

Signed-off-by: Justin Chadwell <[email protected]>

* Improve progress and history messages for heredoc-related commands

Signed-off-by: Justin Chadwell <[email protected]>

* Remove unneeded Finalize method from ImmutableRef.

Finalize was only used outside the cache package in one place, which
called it with the commit arg set to false. The code path followed
when commit==false turned out to essentially be a no-op because
it set "retain cache" to true if it was already set to true.

It was thus safe to remove the only external call to it and remove it
from the interface. This should be helpful for future efforts to
simplify the equal{Mutable,Immutable} fields in cacheRecord, which exist
due to the "lazy commit" feature that Finalize is tied into.

Signed-off-by: Erik Sipsma <[email protected]>

* Fix ref leak if fileop ref fails to mount.

Signed-off-by: Erik Sipsma <[email protected]>

* add error suggest pkg

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: suggest mistyped flag names

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: provide suggestions for mount options

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: add tests for error suggestions

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: remove unnecessary error wrappings

Signed-off-by: Tonis Tiigi <[email protected]>

* enable riscv64 build

Signed-off-by: Tonis Tiigi <[email protected]>

* Update QEMU emulators

Signed-off-by: CrazyMax <[email protected]>

* dockerfile: move run network to stable channel

Signed-off-by: Tonis Tiigi <[email protected]>

* Automatically detect default git branch

Instead of just assuming that the default branch is master, use ls-remote to find out. Also removed tests that didn't specifiy a branch but required authentication, because those will fail now that the repo is actually checked.

Signed-off-by: Levi Harrison <[email protected]>

* Moved getDefaultBranch function to gitsource

It is my suspecion that the tests were failing on previous commits because of the lack of authentication and other stuff like that available in gitidentifier as compared to gitsource

Signed-off-by: Levi Harrison <[email protected]>

* Fix tests

Unfortunately, further test cases will have to be removed because gitindentifier will now leave the branch blank instead of filling it in

Signed-off-by: Levi Harrison <[email protected]>

* git: fix default branch detection

Signed-off-by: Tonis Tiigi <[email protected]>

* Enable to forcefully specify compression type

Signed-off-by: ktock <[email protected]>

* Add full timestamp to logs

Signed-off-by: Yamazaki Masashi <[email protected]>

* Remove meaningless encode

Signed-off-by: Yamazaki Masashi <[email protected]>

* Ignore missing providers for blobs w/ same chainid.

GetByBlob checks to see if there are any other blobs with the same
(uncompressed) ChainID and, if so, reuses their unpacked snapshot if it
exists.

The problem is if this code finds a match, it was trying to get the
matching record, but couldn't do so when the match is lazy because the
caller doesn't necessarily have descriptor handlers setup for it.

This commit changes the behavior to just ignore any match with the same
ChainID that's also lazy as they just aren't usable for the
snapshot-reuse optimization.

Signed-off-by: Erik Sipsma <[email protected]>

* authprovider: handle eaccess on storing token seeds

Signed-off-by: Tonis Tiigi <[email protected]>

* log with traceID and spanID

Signed-off-by: Morlay <[email protected]>

* github: update CI buildkit to v0.9.0-rc1

Signed-off-by: Tonis Tiigi <[email protected]>

* initial version of github cache

Signed-off-by: Tonis Tiigi <[email protected]>

* vendor: add goactionscache

Signed-off-by: Tonis Tiigi <[email protected]>

* caps: add cap for gha cache backend

Signed-off-by: Tonis Tiigi <[email protected]>

* remove tracetransform package

Signed-off-by: Tonis Tiigi <[email protected]>

* resolver: increase default idle conns reuse

The current default were even lower than stdlib defaults.

Signed-off-by: Tonis Tiigi <[email protected]>

* refactor to use util/bklog instead of using logurs directly

Signed-off-by: Morlay <[email protected]>

* GitHub Actions cache docs

Signed-off-by: CrazyMax <[email protected]>

* Skips getting UID/GUID if passwd/group file is not found

When running a WORKDIR instruction, buildkit will create that folder
and chown it to the currently set user. For this, it will try to read
the /etc/passwd file to get the proper UID, and if that user is not
found in the file, the root user will be considered as the owner.

However, Windows image do not have that file, which will result in
an error while building the image. We can consider not finding
the /etc/passwd file as the same as not finding the user in the file,
which would solve this issue.

Signed-off-by: Claudiu Belu <[email protected]>

* add per domain semaphore to limit concurrent connections

This is a safer alternative until we figure out why
http.Transport based limiting fails.

Some connections like cache export/import do not have a
domain key atm and these connections use global pool.

Signed-off-by: Tonis Tiigi <[email protected]>

* update to github.com/containerd/containerd v1.5.3

Signed-off-by: coryb <[email protected]>

* vendor: update go-actions-cache with custom client support

Signed-off-by: Tonis Tiigi <[email protected]>

* tracing: update to otelhttp roundtripper

Signed-off-by: Tonis Tiigi <[email protected]>

* Enhance test matrix

Signed-off-by: CrazyMax <[email protected]>

* fix dropped pull progress output due to canceled context

fixes moby#2248

Signed-off-by: coryb <[email protected]>

* Add span for layer export

This can be a significant amount of time that isn't currently accounted
for in traces.

Signed-off-by: Aaron Lehmann <[email protected]>

* new implementation for limiting tcp connections

The previous implementation had many issues. Eg. on fetch, even if
the data already existed and no remote connections were needed
the request would still be waiting in the queue. Or if two fetches
of same blob happened together they would take up two places in queue
although there was only one remote request.

Signed-off-by: Tonis Tiigi <[email protected]>

* limited: allow extra high-priority connection for json requests

Signed-off-by: Tonis Tiigi <[email protected]>

* ensure wrappers support seeking to continue partial downloads

Signed-off-by: Tonis Tiigi <[email protected]>

* contentutil: change offset to int64 to simplify

Signed-off-by: Tonis Tiigi <[email protected]>

* Exporter config digest typo

Signed-off-by: CrazyMax <[email protected]>

* daemonless: wait for daemon to finish before exit

Signed-off-by: Tonis Tiigi <[email protected]>

* github: update CI buildkit to v0.9.0

Signed-off-by: Tonis Tiigi <[email protected]>

* add docs for new config options

Signed-off-by: Tonis Tiigi <[email protected]>

* add ktock and crazy-max to maintainers

Signed-off-by: Tonis Tiigi <[email protected]>

* Update Dockerfile references to use 1.3

Signed-off-by: Tonis Tiigi <[email protected]>

* docs: update images-readme to v0.9

Signed-off-by: Tonis Tiigi <[email protected]>

* Bump to codecov/codecov-action v2

Signed-off-by: CrazyMax <[email protected]>

* build(deps): bump github.com/containerd/containerd from 1.5.3 to 1.5.4

Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](containerd/containerd@v1.5.3...v1.5.4)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* util/tracing: remove incorrect import enforcing comment

This import comment caused compilation of buildx to fail if `GO111MODULE` was
set to `off`:

Without `GO111MODULE` set (but with `-mod=vendor`:

    echo $GO111MODULE

    export PKG=github.com/docker/buildx
    export LDFLAGS="-X ${PKG}/version.Version=$(git describe --match 'v[0-9]*' --always --tags) -X ${PKG}/version.Revision=$(git rev-parse HEAD) -X ${PKG}/version.Package=${PKG}"
    GOFLAGS=-mod=vendor go build -o bin/docker-buildx -ldflags "${LDFLAGS}" ./cmd/buildx
    bin/docker-buildx version
    github.com/docker/buildx v0.6.0 d9ee3b134cbc2d09513fa7fee4176a3919e05887

When setting `GO111MODULE=off`, it fails on the incorrect import path in the
vendored file (looks like GO111MODULE=on ignores import-path comments?):

    export GO111MODULE=off
    root@5a55ec1c1eed:/go/src/github.com/docker/buildx# GOFLAGS=-mod=vendor go build -o bin/docker-buildx -ldflags "${LDFLAGS}" ./cmd/buildx
    vendor/github.com/moby/buildkit/client/client.go:20:2: code in directory /go/src/github.com/docker/buildx/vendor/github.com/moby/buildkit/util/tracing/otlptracegrpc expects import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
    vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/connection/connection.go:33:2: found import comments "go.opentelemetry.io/otel/exporters/otlp/internal/otlpconfig" (options.go) and "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig" (optiontypes.go) in /go/src/github.com/docker/buildx/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Fix protoc link

Signed-off-by: CrazyMax <[email protected]>

* Allow ExitError type to be transmitted over GRPC

This will allow clients to retrieve exit error codes returned during a
solve without parsing the error messages.

Signed-off-by: Aaron Lehmann <[email protected]>

* Update to github.com/opencontainers/runc v1.0.1

Signed-off-by: CrazyMax <[email protected]>

* Split cache options doc for each exporter

Signed-off-by: CrazyMax <[email protected]>

* Set default socket permissions to 660

The systemd default is 666, it seems.

Signed-off-by: Anders F Björklund <[email protected]>

* fix SecurityMode being dropped on gateway container Start

Signed-off-by: Cory Bennett <[email protected]>

* bump containerd from 1.5.4 to 1.5.5

Signed-off-by: CrazyMax <[email protected]>

* go.mod: golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c

In preparation of replacing the deprecated github.com/docker/docker/pkg/signal,
which uses this version (updating it separately for easier review).

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* replace use of deprecated github.com/docker/docker/pkg/signal

This package was moved to a separate module in github.com/moby/sys/signal

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Additional tests and cleanup for cache/contenthash

This adds a little extra testing around ** patterns, and adds a
(currently skipped) test for copying directories under symlinks (moby#2300).

It removes an extra call to `filepath.FromSlash` in `shouldIncludePath`
and an unused argument to that function.

Signed-off-by: Aaron Lehmann <[email protected]>

* all: remove duplicate imports

Signed-off-by: Koichi Shiraishi <[email protected]>

* all: unify the specs-go package import alias to ocispecs

ocispecs means "O"pen "C"ontainer "I"nitiative image-spec/"specs"-go/v1
                      opencontainers          /image-spec/specs-go/v1

Signed-off-by: Koichi Shiraishi <[email protected]>

* hack/dockerfiles: upgrade golangci-lint version to v1.41.1

Signed-off-by: Koichi Shiraishi <[email protected]>

* golangci-lint: enable importas and add settings for specs-go package

Signed-off-by: Koichi Shiraishi <[email protected]>

* all: unify the go-digest package import alias to digest

Signed-off-by: Koichi Shiraishi <[email protected]>

* golangci-lint: add go-digest importas setting

Signed-off-by: Koichi Shiraishi <[email protected]>

* Fix IncludePattern/ExcludePattern matching

The transformation to rootedPatterns seems very wrong and inconsistent
with what the copy logic did. Change it to match the copy logic, and add
more testing.

Signed-off-by: Aaron Lehmann <[email protected]>

* dockerfile: fix parsing required key without value

Signed-off-by: Tonis Tiigi <[email protected]>

* generated files: use "go install" to install binaries

Now that this repository moved to go1.16, we can use 'go install' to install
these binaries.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* util/stack: update protoc options to work with newer versions

Generating the util/stack protos failed when updating protoc-gen-go to v1.5.2;
it looks like this is the only proto that's not generated using protoc-gen-gogo):

    util/stack/generate.go
    protoc-gen-go: unable to determine Go import path for "stack.proto"

    Please specify either:
        • a "go_package" option in the .proto source file, or
        • a "M" argument on the command line.

    See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

    --go_out: protoc-gen-go: Plugin failed with status code 1.
    util/stack/generate.go:3: running "protoc": exit status 1

Newer protobuf versions expect a go package to be set. Other .proto files in
this repository use the bare package name, but with protoc-gen-go v1.5.2, this
produces an error (package names must at least have a "/"). In addition to
including the option to the .proto file also changes the generated result
(`options go_package "<package name>"`).

Using the `-go_opt=M<package name>` option on the other hand, didn't change the
result (while still on protoc-gen-go v1.3.5), so I used that option instead.

protoc-gen-go v1.5.2 also changed the behavior where the generated file is stored,
seemingly relative to the `../../vendor` path specified. This coud be fixed either
by setting `--go_out=../../`, which was a bit counter-intuitive, or setting the
`--go_opt=paths=source_relative` option. The latter also prevented v1.5.2 from
storing the file in `utils/stack/github.com/moby/buildkit/utils/stack/` (sigh).

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* add missing ExtraHosts to gateway exec

Also adding tests for ExtraHosts and NetMode via gateway exec

Signed-off-by: Cory Bennett <[email protected]>

* add gateway.exec.extrahosts capability

Signed-off-by: Cory Bennett <[email protected]>

* cache: Fix flightcontrol use in computeBlobChain.

Previously, the flightcontrol group was being given a key just set to
the ref's ID, which meant that concurrent calls using different values
of compressionType, createIfNeeded and forceCompression would
incorrectly be de-duplicated.

The change here splits up the flightcontrol group into a few separate
calls and ensures that all the correct input variables are put into the
flightcontrol keys.

Signed-off-by: Erik Sipsma <[email protected]>

* solver: include cachemap index in flightcontrol.

Signed-off-by: Erik Sipsma <[email protected]>

* pull: use resolvemode in flightcontrol key.

Signed-off-by: Erik Sipsma <[email protected]>

* util: remove outdated flightcontrol test assertion.

The test was making an assertion that is no longer expected to always be
true after moby#2195, which purposely made flightcontrol less deterministic.
This lead to occasional failures.

Signed-off-by: Erik Sipsma <[email protected]>

* update go to 1.17

Signed-off-by: Tonis Tiigi <[email protected]>

* gomod: update to go1.17

Signed-off-by: Tonis Tiigi <[email protected]>

* Follow links in includedPaths to resolve incorrect caching when source path is behind symlink

As discussed in moby#2300, includedPaths does not resolve symlinks when
looking up the source path in the prefix tree. If the user requests a
path that involves symlinks (for example, /a/foo when a symlink /a -> /b
exists), includedPaths will not find it, and will expect nothing to be
copied. This does not match the actual copy behavior implemented in
fsutil, which will follow symlinks in prefix components of a given path,
so it can end up caching an empty result even though the copy will
produce a non-empty result, which is quite bad.

To fix this, use getFollowLinks to resolve the path before walking it.
In the wildcard case, this is done to the non-wildcard prefix of the
path (if any), which matches the behavior in fsutil.

Fixes the repro case here:
https://gist.github.com/aaronlehmann/64054c9a2cff0d27e200cc107bba3d69

Fixes moby#2300

Signed-off-by: Aaron Lehmann <[email protected]>

* cmd/buildkitd: replace BurntSushi/toml with pelletier/go-toml

The BurntSushi/toml project has been deprecated, and the ecosystem
is converging on using pelletier/go-toml as the "canonical" replacement.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* control: fix 64bit alignment for buildcount

Signed-off-by: Tonis Tiigi <[email protected]>

* Use fixed fileutils matching functions

This is important for two reasons:

1) Keeps caching logic consistent with recent fsutil changes to use
   these functions (also vendored here).

2) Allows us to move forward with removal of the original buggy Matches
   implementation in moby/moby.

Signed-off-by: Aaron Lehmann <[email protected]>

* Add `estargz` compression type

Signed-off-by: Kohei Tokunaga <[email protected]>

* Refactor cache metadata interface.

There are a few goals with this refactor:
1. Remove external access to fields that no longer make sense and/or
   won't make sense soon due to other potential changes. For example,
   there can now be multiple blobs associated with a ref (for different
   compression types), so the fact that you could access the "Blob"
   field from the Info method on Ref incorrectly implied there was just
   a single blob for the ref. This is on top of the fact that there is
   no need for external access to blob digests.
2. Centralize use of cache metadata inside the cache package.
   Previously, many parts of the code outside the cache package could
   obtain the bolt storage item for any ref and read/write it directly.
   This made it hard to understand what fields are used and when. Now,
   the Metadata method has been removed from the Ref interface and
   replaced with getters+setters for metadata fields we want to expose
   outside the package, which makes it much easier to track and
   understand. Similar changes have been made to the metadata search
   interface.
3. Use a consistent getter+setter interface for metadata, replacing
   the mix of interfaces like Metadata(), Size(), Info() and other
   inconsistencies.

Signed-off-by: Erik Sipsma <[email protected]>

* Use containerd/pkg/seccomp.IsEnabled()

This replaces the local SeccompSupported() utility for the implementation
in containerd, which performs the same check.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Compute diff from the upper dir of overlayfs-based snapshotter

Signed-off-by: Kohei Tokunaga <[email protected]>

* go.mod: github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6

full diff: moby/term@bea5bbe...3f7ff69

updates Azure/go-ansiterm to fix integer overflow on arm

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* go.mod: split the indirect packages

After go1.17, all indirect packages are listed in the go.mod file.

In addition, has been introduced the ability to list indirect packages separately.
Split the indirect packages to make the dependency packages clearer.

Signed-off-by: Koichi Shiraishi <[email protected]>

* exporter: support creating blobs with zstd compression

Signed-off-by: Tonis Tiigi <[email protected]>

* update getremote test for zstd

Estargz support has been removed from this test as
implementation does not guarantee digest stability
and only reason it passed were the exceptions in the
test via variant map that ignored cases where timing
resulted the digest to go wrong. This needs to be
addressed in the follow up if we want to keep estargz
support.

Signed-off-by: Tonis Tiigi <[email protected]>

* Add test case for symlink which is not final path component before wildcard

Signed-off-by: Aaron Lehmann <[email protected]>

* hack: allow mounting in workdir in shell

Signed-off-by: Tonis Tiigi <[email protected]>

* Handle the case of multiple path component symlinks (including last component) in wildcard prefix

Signed-off-by: Aaron Lehmann <[email protected]>

* Use getFollowLinksWalked

Signed-off-by: Aaron Lehmann <[email protected]>

* bklog: only log tracing ids when span exporter not nil

Signed-off-by: Morlay <[email protected]>

* Refactor url redacting util

Signed-off-by: CrazyMax <[email protected]>

* Clean up old TODOs

Signed-off-by: Tonis Tiigi <[email protected]>

* Move config parsing to a dedicated pkg

Signed-off-by: CrazyMax <[email protected]>

* Generate and embed build sources

Signed-off-by: CrazyMax <[email protected]>

* resolver: use different mutext for handlers and hosts

hosts mutex is called on initialization, meaning `GetResolver` might
block if it is in the middle of auth exchange. This is currently bad
in the case where Job initialization needs to register a name before
timeout is reached.

Signed-off-by: Tonis Tiigi <[email protected]>

* resolver: make sure authorizer is not overwritten on other resolvers 

Authorizer stores the current session.Group so if it is
overwritten for another resolver it means that session might
have been dropped and authentication will fail.

Signed-off-by: Tonis Tiigi <[email protected]>

* solver: increase timeout for job registration

Signed-off-by: Tonis Tiigi <[email protected]>

* go.mod: sort and move self-managed indirect dependencies to first block

Signed-off-by: Koichi Shiraishi <[email protected]>

* Fix issues moby#1980 and moby#2198

Signed-off-by: Jonathan Giannuzzi <[email protected]>

* Add BUILDKIT_SANDBOX_HOSTNAME build-arg

Signed-off-by: CrazyMax <[email protected]>

* Fix estargz compression loses the original tar metadata

Currently, eStargz compression doesn't preserve the original tar metadata
(header bytes and their order). This causes failure of `TestGetRemote` because
an uncompressed blob converted from a gzip blob provides different digset
against the one converted from eStargz blob even if their original tar (computed
by differ) are the same.
This commit solves this issue by fixing eStargz to preserve original tar's
metadata that is modified by eStargz.

Signed-off-by: Kohei Tokunaga <[email protected]>

* Enhance ANSI color for progress ui

Signed-off-by: CrazyMax <[email protected]>

* Move resolver config to a dedicated package

Signed-off-by: CrazyMax <[email protected]>

* Standard user umask for git process

Signed-off-by: CrazyMax <[email protected]>

* make sure ci runs on version branches

Signed-off-by: Tonis Tiigi <[email protected]>

* return an error instead of panicking when failing to get edge

Signed-off-by: Maxime Lagresle <[email protected]>

* Add support for shm size

Signed-off-by: CrazyMax <[email protected]>

* gha: handle already exist error on save

Signed-off-by: Tonis Tiigi <[email protected]>

* don't cast Value when pipe is errored

Signed-off-by: Maxime Lagresle <[email protected]>

* gha: handle missing blob gracefully

FromRemote now calls CheckDescriptor to validate
if the blob still exists. Otherwise cache loading
fallback does not get triggered because cache is
actually lazily pulled in only on exporting phase.

Signed-off-by: Tonis Tiigi <[email protected]>

* solver: make sure previous error gets reset

This happens for example when cache loading fails
but then fallback step execution succeeds. 

Signed-off-by: Tonis Tiigi <[email protected]>

* vendor: update go-actions-cache to 4d48f2ff

Signed-off-by: Tonis Tiigi <[email protected]>

* Differ: write diff to the content store over bufio writer

Signed-off-by: Kohei Tokunaga <[email protected]>

* Do not enable overlayfs differ for fuse-overlayfs-snapshotter

Signed-off-by: Kohei Tokunaga <[email protected]>

* Converter: make sure uncompressed digest annotation is set

Signed-off-by: Kohei Tokunaga <[email protected]>

* Use gha cache on CI

Signed-off-by: CrazyMax <[email protected]>

* Creating tcp socket without using go-connections.

Signed-off-by: Jacob MacElroy <[email protected]>

* limited: fix possible deadlock when pushhandler calls fetcher

Signed-off-by: Tonis Tiigi <[email protected]>

* README.md: improve "Building multi-platform images" section

Signed-off-by: Akihiro Suda <[email protected]>

* Add support for ulimit

Signed-off-by: CrazyMax <[email protected]>

* solver: fix exporters unsafely sharing records

Signed-off-by: Tonis Tiigi <[email protected]>

* fix: provide only available capabilities to insecure environment

The problem this change is trying to fix are the environments where some
capabilities are already dropped, so they can't be granted to the
job with `--security=insecure`.

I know that probably fixed set of capabilities was implemented to
provide a stable build environment, but at the same time this breaks
environments with reduced capabilities.

Signed-off-by: Andrey Smirnov <[email protected]>

* client: allow setting custom dialer for session endpoint

Signed-off-by: Tonis Tiigi <[email protected]>

* add size to tmpfs mounts

Signed-off-by: CrazyMax <[email protected]>

* deduplicate mounts

Signed-off-by: CrazyMax <[email protected]>

* use bytes as given size for tmpfs mount

Signed-off-by: CrazyMax <[email protected]>

* use `opts.MemBytes` for tmpfs size run mount instruction

Signed-off-by: CrazyMax <[email protected]>

* Re-add Finalize method to ImmutableRef.

It turns out that while Buildkit code did not need this method to
be public, moby code does still use it, so we have to re-add it
after its removal in moby#2216 (commit b85ef15).

This commit is not a revert because some of the changes are
still desireable, namely the removal of the "commit" parameter
which didn't serve any purpose.

Signed-off-by: Erik Sipsma <[email protected]>

Co-authored-by: Tonis Tiigi <[email protected]>
Co-authored-by: Akihiro Suda <[email protected]>
Co-authored-by: Justin Chadwell <[email protected]>
Co-authored-by: Erik Sipsma <[email protected]>
Co-authored-by: Akihiro Suda <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Levi Harrison <[email protected]>
Co-authored-by: ktock <[email protected]>
Co-authored-by: masibw <[email protected]>
Co-authored-by: Morlay <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Claudiu Belu <[email protected]>
Co-authored-by: coryb <[email protected]>
Co-authored-by: Aaron Lehmann <[email protected]>
Co-authored-by: Sebastiaan van Stijn <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastiaan van Stijn <[email protected]>
Co-authored-by: Anders F Björklund <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Koichi Shiraishi <[email protected]>
Co-authored-by: Jonathan Giannuzzi <[email protected]>
Co-authored-by: Maxime Lagresle <[email protected]>
Co-authored-by: Jacob MacElroy <[email protected]>
Co-authored-by: Andrey Smirnov <[email protected]>
alexcb added a commit to earthly/buildkit-old-fork that referenced this issue Oct 28, 2021
* integration: add common context base to all integration tests

Signed-off-by: Tonis Tiigi <[email protected]>

* vendor: update opentelemetry to 1.0.0-rc

Signed-off-by: Tonis Tiigi <[email protected]>

* add current tracing context detection and exec propagation

Signed-off-by: Tonis Tiigi <[email protected]>
(cherry picked from commit bc9a83144c83e9fd78007b7bfe92e8082c59d40e)

* add transform package to convert from otlp

Signed-off-by: Tonis Tiigi <[email protected]>

* tracing: add delegated exporter

Signed-off-by: Tonis Tiigi <[email protected]>

* otlgrpc: provide a way to get otlp client from grpc conn

Hopefully this can be removed with a future upstream change
that could make this configurable. The package also needs
internal dependency that is copied in.

Signed-off-by: Tonis Tiigi <[email protected]>

* enable collecting traces via control api

Signed-off-by: Tonis Tiigi <[email protected]>

* support collecting traces from llb.Exec

Signed-off-by: Tonis Tiigi <[email protected]>

* client: pass delegated exporter as parameter

Avoid client package having dependency on global detect package.

Signed-off-by: Tonis Tiigi <[email protected]>

* update runc binary to v1.0.0 GA

Signed-off-by: Akihiro Suda <[email protected]>

* handle unconfigured spans without errors

Signed-off-by: Tonis Tiigi <[email protected]>

* llb: add constraints to vertex and validate

Signed-off-by: Tonis Tiigi <[email protected]>

* llb: add constraints to async llb

Signed-off-by: Tonis Tiigi <[email protected]>

* llb: ensure meta resolver uses platform form constraints

Signed-off-by: Tonis Tiigi <[email protected]>

* flightcontrol: reduce contention between goroutines

Signed-off-by: Tonis Tiigi <[email protected]>

* Avoid nil pointer dereference when copying from image with no layers

Fix this panic when copying from an image with no layers:

```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x50 pc=0xdd8c17]

goroutine 326 [running]:
github.com/moby/buildkit/cache/contenthash.(*cacheManager).Checksum(0xc0005ec030, 0x1682c00, 0xc000842140, 0x0, 0x0, 0xc0005d4023, 0x1, 0x0, 0x0, 0x0, ...)
	/src/cache/contenthash/checksum.go:95 +0x37
github.com/moby/buildkit/cache/contenthash.Checksum(0x1682c00, 0xc000842140, 0x0, 0x0, 0xc0005d4023, 0x1, 0x0, 0x0, 0x0, 0x0, ...)
	/src/cache/contenthash/checksum.go:59 +0xd5
github.com/moby/buildkit/solver/llbsolver.NewContentHashFunc.func1.1(0x0, 0x4425d6)
	/src/solver/llbsolver/result.go:59 +0x20a
golang.org/x/sync/errgroup.(*Group).Go.func1(0xc00056a360, 0xc000594510)
	/src/vendor/golang.org/x/sync/errgroup/errgroup.go:57 +0x59
created by golang.org/x/sync/errgroup.(*Group).Go
	/src/vendor/golang.org/x/sync/errgroup/errgroup.go:54 +0x66
```

When the path is "/", we allow it because it's a noop.

Based on moby#2185

Signed-off-by: Aaron Lehmann <[email protected]>

* Add test for copying from scratch

Signed-off-by: Aaron Lehmann <[email protected]>

* Check that scratch is mounted as empty dir

Signed-off-by: Aaron Lehmann <[email protected]>

* Make error message consistent when layer is empty

Signed-off-by: Aaron Lehmann <[email protected]>

* Test with tonistiigi/test:nolayers as well

Signed-off-by: Aaron Lehmann <[email protected]>

* ensure containerd io is complete and closed before returning

Signed-off-by: Cory Bennett <[email protected]>

* [moby#2112] progress.Controller should own the progress.Writer to prevent leaks

Signed-off-by: Cory Bennett <[email protected]>

* [moby#2112] progress.FromContext returns a writer factory
this allows progress.Controller to manage the writer lifecycle

Signed-off-by: Cory Bennett <[email protected]>

* contenthash: use SeekLowerBound to seek radix tree

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: fix git version detection

Signed-off-by: Tonis Tiigi <[email protected]>

* Add support for heredocs with ONBUILD

Signed-off-by: Justin Chadwell <[email protected]>

* dockerfile: use none differ for dockerfile/dockerignore

This avoids wrong metadata matches on small files

Signed-off-by: Tonis Tiigi <[email protected]>

* progressui: print logs for failed step as summary in plain mode

Signed-off-by: Tonis Tiigi <[email protected]>

* grpcerrors: avoid rpc error wrapping in error messages

Signed-off-by: Tonis Tiigi <[email protected]>

* exec: improve error message on exec errors

Signed-off-by: Tonis Tiigi <[email protected]>

* Improve heredoc parsing to allow more generic words

Previously, heredoc names were restricted to simple alphanumeric
strings. However, heredocs should support much more complex use-cases,
including quoting anywhere, as well as allowing special symbols like `.`
for easily expressing file extensions.

This patch adds support for these more complex cases, by using the shell
lexer to parse each heredoc name. Additionally, we include improvements
to the lexer to optionally preserve escape tokens to avoid problems when
lexing words that have already been lexed before.

Signed-off-by: Justin Chadwell <[email protected]>

* Improve progress and history messages for heredoc-related commands

Signed-off-by: Justin Chadwell <[email protected]>

* Remove unneeded Finalize method from ImmutableRef.

Finalize was only used outside the cache package in one place, which
called it with the commit arg set to false. The code path followed
when commit==false turned out to essentially be a no-op because
it set "retain cache" to true if it was already set to true.

It was thus safe to remove the only external call to it and remove it
from the interface. This should be helpful for future efforts to
simplify the equal{Mutable,Immutable} fields in cacheRecord, which exist
due to the "lazy commit" feature that Finalize is tied into.

Signed-off-by: Erik Sipsma <[email protected]>

* Fix ref leak if fileop ref fails to mount.

Signed-off-by: Erik Sipsma <[email protected]>

* add error suggest pkg

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: suggest mistyped flag names

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: provide suggestions for mount options

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: add tests for error suggestions

Signed-off-by: Tonis Tiigi <[email protected]>

* dockerfile: remove unnecessary error wrappings

Signed-off-by: Tonis Tiigi <[email protected]>

* enable riscv64 build

Signed-off-by: Tonis Tiigi <[email protected]>

* Update QEMU emulators

Signed-off-by: CrazyMax <[email protected]>

* dockerfile: move run network to stable channel

Signed-off-by: Tonis Tiigi <[email protected]>

* Automatically detect default git branch

Instead of just assuming that the default branch is master, use ls-remote to find out. Also removed tests that didn't specifiy a branch but required authentication, because those will fail now that the repo is actually checked.

Signed-off-by: Levi Harrison <[email protected]>

* Moved getDefaultBranch function to gitsource

It is my suspecion that the tests were failing on previous commits because of the lack of authentication and other stuff like that available in gitidentifier as compared to gitsource

Signed-off-by: Levi Harrison <[email protected]>

* Fix tests

Unfortunately, further test cases will have to be removed because gitindentifier will now leave the branch blank instead of filling it in

Signed-off-by: Levi Harrison <[email protected]>

* git: fix default branch detection

Signed-off-by: Tonis Tiigi <[email protected]>

* Enable to forcefully specify compression type

Signed-off-by: ktock <[email protected]>

* Add full timestamp to logs

Signed-off-by: Yamazaki Masashi <[email protected]>

* Remove meaningless encode

Signed-off-by: Yamazaki Masashi <[email protected]>

* Ignore missing providers for blobs w/ same chainid.

GetByBlob checks to see if there are any other blobs with the same
(uncompressed) ChainID and, if so, reuses their unpacked snapshot if it
exists.

The problem is if this code finds a match, it was trying to get the
matching record, but couldn't do so when the match is lazy because the
caller doesn't necessarily have descriptor handlers setup for it.

This commit changes the behavior to just ignore any match with the same
ChainID that's also lazy as they just aren't usable for the
snapshot-reuse optimization.

Signed-off-by: Erik Sipsma <[email protected]>

* authprovider: handle eaccess on storing token seeds

Signed-off-by: Tonis Tiigi <[email protected]>

* log with traceID and spanID

Signed-off-by: Morlay <[email protected]>

* github: update CI buildkit to v0.9.0-rc1

Signed-off-by: Tonis Tiigi <[email protected]>

* initial version of github cache

Signed-off-by: Tonis Tiigi <[email protected]>

* vendor: add goactionscache

Signed-off-by: Tonis Tiigi <[email protected]>

* caps: add cap for gha cache backend

Signed-off-by: Tonis Tiigi <[email protected]>

* remove tracetransform package

Signed-off-by: Tonis Tiigi <[email protected]>

* resolver: increase default idle conns reuse

The current default were even lower than stdlib defaults.

Signed-off-by: Tonis Tiigi <[email protected]>

* refactor to use util/bklog instead of using logurs directly

Signed-off-by: Morlay <[email protected]>

* GitHub Actions cache docs

Signed-off-by: CrazyMax <[email protected]>

* Skips getting UID/GUID if passwd/group file is not found

When running a WORKDIR instruction, buildkit will create that folder
and chown it to the currently set user. For this, it will try to read
the /etc/passwd file to get the proper UID, and if that user is not
found in the file, the root user will be considered as the owner.

However, Windows image do not have that file, which will result in
an error while building the image. We can consider not finding
the /etc/passwd file as the same as not finding the user in the file,
which would solve this issue.

Signed-off-by: Claudiu Belu <[email protected]>

* add per domain semaphore to limit concurrent connections

This is a safer alternative until we figure out why
http.Transport based limiting fails.

Some connections like cache export/import do not have a
domain key atm and these connections use global pool.

Signed-off-by: Tonis Tiigi <[email protected]>

* update to github.com/containerd/containerd v1.5.3

Signed-off-by: coryb <[email protected]>

* vendor: update go-actions-cache with custom client support

Signed-off-by: Tonis Tiigi <[email protected]>

* tracing: update to otelhttp roundtripper

Signed-off-by: Tonis Tiigi <[email protected]>

* Enhance test matrix

Signed-off-by: CrazyMax <[email protected]>

* fix dropped pull progress output due to canceled context

fixes moby#2248

Signed-off-by: coryb <[email protected]>

* Add span for layer export

This can be a significant amount of time that isn't currently accounted
for in traces.

Signed-off-by: Aaron Lehmann <[email protected]>

* new implementation for limiting tcp connections

The previous implementation had many issues. Eg. on fetch, even if
the data already existed and no remote connections were needed
the request would still be waiting in the queue. Or if two fetches
of same blob happened together they would take up two places in queue
although there was only one remote request.

Signed-off-by: Tonis Tiigi <[email protected]>

* limited: allow extra high-priority connection for json requests

Signed-off-by: Tonis Tiigi <[email protected]>

* ensure wrappers support seeking to continue partial downloads

Signed-off-by: Tonis Tiigi <[email protected]>

* contentutil: change offset to int64 to simplify

Signed-off-by: Tonis Tiigi <[email protected]>

* Exporter config digest typo

Signed-off-by: CrazyMax <[email protected]>

* daemonless: wait for daemon to finish before exit

Signed-off-by: Tonis Tiigi <[email protected]>

* github: update CI buildkit to v0.9.0

Signed-off-by: Tonis Tiigi <[email protected]>

* add docs for new config options

Signed-off-by: Tonis Tiigi <[email protected]>

* add ktock and crazy-max to maintainers

Signed-off-by: Tonis Tiigi <[email protected]>

* Update Dockerfile references to use 1.3

Signed-off-by: Tonis Tiigi <[email protected]>

* docs: update images-readme to v0.9

Signed-off-by: Tonis Tiigi <[email protected]>

* Bump to codecov/codecov-action v2

Signed-off-by: CrazyMax <[email protected]>

* build(deps): bump github.com/containerd/containerd from 1.5.3 to 1.5.4

Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/containerd/containerd/releases)
- [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md)
- [Commits](containerd/containerd@v1.5.3...v1.5.4)

---
updated-dependencies:
- dependency-name: github.com/containerd/containerd
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* util/tracing: remove incorrect import enforcing comment

This import comment caused compilation of buildx to fail if `GO111MODULE` was
set to `off`:

Without `GO111MODULE` set (but with `-mod=vendor`:

    echo $GO111MODULE

    export PKG=github.com/docker/buildx
    export LDFLAGS="-X ${PKG}/version.Version=$(git describe --match 'v[0-9]*' --always --tags) -X ${PKG}/version.Revision=$(git rev-parse HEAD) -X ${PKG}/version.Package=${PKG}"
    GOFLAGS=-mod=vendor go build -o bin/docker-buildx -ldflags "${LDFLAGS}" ./cmd/buildx
    bin/docker-buildx version
    github.com/docker/buildx v0.6.0 d9ee3b134cbc2d09513fa7fee4176a3919e05887

When setting `GO111MODULE=off`, it fails on the incorrect import path in the
vendored file (looks like GO111MODULE=on ignores import-path comments?):

    export GO111MODULE=off
    root@5a55ec1c1eed:/go/src/github.com/docker/buildx# GOFLAGS=-mod=vendor go build -o bin/docker-buildx -ldflags "${LDFLAGS}" ./cmd/buildx
    vendor/github.com/moby/buildkit/client/client.go:20:2: code in directory /go/src/github.com/docker/buildx/vendor/github.com/moby/buildkit/util/tracing/otlptracegrpc expects import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
    vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/connection/connection.go:33:2: found import comments "go.opentelemetry.io/otel/exporters/otlp/internal/otlpconfig" (options.go) and "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig" (optiontypes.go) in /go/src/github.com/docker/buildx/vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Fix protoc link

Signed-off-by: CrazyMax <[email protected]>

* Allow ExitError type to be transmitted over GRPC

This will allow clients to retrieve exit error codes returned during a
solve without parsing the error messages.

Signed-off-by: Aaron Lehmann <[email protected]>

* Update to github.com/opencontainers/runc v1.0.1

Signed-off-by: CrazyMax <[email protected]>

* Split cache options doc for each exporter

Signed-off-by: CrazyMax <[email protected]>

* Set default socket permissions to 660

The systemd default is 666, it seems.

Signed-off-by: Anders F Björklund <[email protected]>

* fix SecurityMode being dropped on gateway container Start

Signed-off-by: Cory Bennett <[email protected]>

* bump containerd from 1.5.4 to 1.5.5

Signed-off-by: CrazyMax <[email protected]>

* go.mod: golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c

In preparation of replacing the deprecated github.com/docker/docker/pkg/signal,
which uses this version (updating it separately for easier review).

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* replace use of deprecated github.com/docker/docker/pkg/signal

This package was moved to a separate module in github.com/moby/sys/signal

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Additional tests and cleanup for cache/contenthash

This adds a little extra testing around ** patterns, and adds a
(currently skipped) test for copying directories under symlinks (moby#2300).

It removes an extra call to `filepath.FromSlash` in `shouldIncludePath`
and an unused argument to that function.

Signed-off-by: Aaron Lehmann <[email protected]>

* all: remove duplicate imports

Signed-off-by: Koichi Shiraishi <[email protected]>

* all: unify the specs-go package import alias to ocispecs

ocispecs means "O"pen "C"ontainer "I"nitiative image-spec/"specs"-go/v1
                      opencontainers          /image-spec/specs-go/v1

Signed-off-by: Koichi Shiraishi <[email protected]>

* hack/dockerfiles: upgrade golangci-lint version to v1.41.1

Signed-off-by: Koichi Shiraishi <[email protected]>

* golangci-lint: enable importas and add settings for specs-go package

Signed-off-by: Koichi Shiraishi <[email protected]>

* all: unify the go-digest package import alias to digest

Signed-off-by: Koichi Shiraishi <[email protected]>

* golangci-lint: add go-digest importas setting

Signed-off-by: Koichi Shiraishi <[email protected]>

* Fix IncludePattern/ExcludePattern matching

The transformation to rootedPatterns seems very wrong and inconsistent
with what the copy logic did. Change it to match the copy logic, and add
more testing.

Signed-off-by: Aaron Lehmann <[email protected]>

* dockerfile: fix parsing required key without value

Signed-off-by: Tonis Tiigi <[email protected]>

* generated files: use "go install" to install binaries

Now that this repository moved to go1.16, we can use 'go install' to install
these binaries.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* util/stack: update protoc options to work with newer versions

Generating the util/stack protos failed when updating protoc-gen-go to v1.5.2;
it looks like this is the only proto that's not generated using protoc-gen-gogo):

    util/stack/generate.go
    protoc-gen-go: unable to determine Go import path for "stack.proto"

    Please specify either:
        • a "go_package" option in the .proto source file, or
        • a "M" argument on the command line.

    See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

    --go_out: protoc-gen-go: Plugin failed with status code 1.
    util/stack/generate.go:3: running "protoc": exit status 1

Newer protobuf versions expect a go package to be set. Other .proto files in
this repository use the bare package name, but with protoc-gen-go v1.5.2, this
produces an error (package names must at least have a "/"). In addition to
including the option to the .proto file also changes the generated result
(`options go_package "<package name>"`).

Using the `-go_opt=M<package name>` option on the other hand, didn't change the
result (while still on protoc-gen-go v1.3.5), so I used that option instead.

protoc-gen-go v1.5.2 also changed the behavior where the generated file is stored,
seemingly relative to the `../../vendor` path specified. This coud be fixed either
by setting `--go_out=../../`, which was a bit counter-intuitive, or setting the
`--go_opt=paths=source_relative` option. The latter also prevented v1.5.2 from
storing the file in `utils/stack/github.com/moby/buildkit/utils/stack/` (sigh).

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* add missing ExtraHosts to gateway exec

Also adding tests for ExtraHosts and NetMode via gateway exec

Signed-off-by: Cory Bennett <[email protected]>

* add gateway.exec.extrahosts capability

Signed-off-by: Cory Bennett <[email protected]>

* cache: Fix flightcontrol use in computeBlobChain.

Previously, the flightcontrol group was being given a key just set to
the ref's ID, which meant that concurrent calls using different values
of compressionType, createIfNeeded and forceCompression would
incorrectly be de-duplicated.

The change here splits up the flightcontrol group into a few separate
calls and ensures that all the correct input variables are put into the
flightcontrol keys.

Signed-off-by: Erik Sipsma <[email protected]>

* solver: include cachemap index in flightcontrol.

Signed-off-by: Erik Sipsma <[email protected]>

* pull: use resolvemode in flightcontrol key.

Signed-off-by: Erik Sipsma <[email protected]>

* util: remove outdated flightcontrol test assertion.

The test was making an assertion that is no longer expected to always be
true after moby#2195, which purposely made flightcontrol less deterministic.
This lead to occasional failures.

Signed-off-by: Erik Sipsma <[email protected]>

* update go to 1.17

Signed-off-by: Tonis Tiigi <[email protected]>

* gomod: update to go1.17

Signed-off-by: Tonis Tiigi <[email protected]>

* Follow links in includedPaths to resolve incorrect caching when source path is behind symlink

As discussed in moby#2300, includedPaths does not resolve symlinks when
looking up the source path in the prefix tree. If the user requests a
path that involves symlinks (for example, /a/foo when a symlink /a -> /b
exists), includedPaths will not find it, and will expect nothing to be
copied. This does not match the actual copy behavior implemented in
fsutil, which will follow symlinks in prefix components of a given path,
so it can end up caching an empty result even though the copy will
produce a non-empty result, which is quite bad.

To fix this, use getFollowLinks to resolve the path before walking it.
In the wildcard case, this is done to the non-wildcard prefix of the
path (if any), which matches the behavior in fsutil.

Fixes the repro case here:
https://gist.github.com/aaronlehmann/64054c9a2cff0d27e200cc107bba3d69

Fixes moby#2300

Signed-off-by: Aaron Lehmann <[email protected]>

* cmd/buildkitd: replace BurntSushi/toml with pelletier/go-toml

The BurntSushi/toml project has been deprecated, and the ecosystem
is converging on using pelletier/go-toml as the "canonical" replacement.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* control: fix 64bit alignment for buildcount

Signed-off-by: Tonis Tiigi <[email protected]>

* Use fixed fileutils matching functions

This is important for two reasons:

1) Keeps caching logic consistent with recent fsutil changes to use
   these functions (also vendored here).

2) Allows us to move forward with removal of the original buggy Matches
   implementation in moby/moby.

Signed-off-by: Aaron Lehmann <[email protected]>

* Add `estargz` compression type

Signed-off-by: Kohei Tokunaga <[email protected]>

* Refactor cache metadata interface.

There are a few goals with this refactor:
1. Remove external access to fields that no longer make sense and/or
   won't make sense soon due to other potential changes. For example,
   there can now be multiple blobs associated with a ref (for different
   compression types), so the fact that you could access the "Blob"
   field from the Info method on Ref incorrectly implied there was just
   a single blob for the ref. This is on top of the fact that there is
   no need for external access to blob digests.
2. Centralize use of cache metadata inside the cache package.
   Previously, many parts of the code outside the cache package could
   obtain the bolt storage item for any ref and read/write it directly.
   This made it hard to understand what fields are used and when. Now,
   the Metadata method has been removed from the Ref interface and
   replaced with getters+setters for metadata fields we want to expose
   outside the package, which makes it much easier to track and
   understand. Similar changes have been made to the metadata search
   interface.
3. Use a consistent getter+setter interface for metadata, replacing
   the mix of interfaces like Metadata(), Size(), Info() and other
   inconsistencies.

Signed-off-by: Erik Sipsma <[email protected]>

* Use containerd/pkg/seccomp.IsEnabled()

This replaces the local SeccompSupported() utility for the implementation
in containerd, which performs the same check.

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* Compute diff from the upper dir of overlayfs-based snapshotter

Signed-off-by: Kohei Tokunaga <[email protected]>

* go.mod: github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6

full diff: moby/term@bea5bbe...3f7ff69

updates Azure/go-ansiterm to fix integer overflow on arm

Signed-off-by: Sebastiaan van Stijn <[email protected]>

* go.mod: split the indirect packages

After go1.17, all indirect packages are listed in the go.mod file.

In addition, has been introduced the ability to list indirect packages separately.
Split the indirect packages to make the dependency packages clearer.

Signed-off-by: Koichi Shiraishi <[email protected]>

* exporter: support creating blobs with zstd compression

Signed-off-by: Tonis Tiigi <[email protected]>

* update getremote test for zstd

Estargz support has been removed from this test as
implementation does not guarantee digest stability
and only reason it passed were the exceptions in the
test via variant map that ignored cases where timing
resulted the digest to go wrong. This needs to be
addressed in the follow up if we want to keep estargz
support.

Signed-off-by: Tonis Tiigi <[email protected]>

* Add test case for symlink which is not final path component before wildcard

Signed-off-by: Aaron Lehmann <[email protected]>

* hack: allow mounting in workdir in shell

Signed-off-by: Tonis Tiigi <[email protected]>

* Handle the case of multiple path component symlinks (including last component) in wildcard prefix

Signed-off-by: Aaron Lehmann <[email protected]>

* Use getFollowLinksWalked

Signed-off-by: Aaron Lehmann <[email protected]>

* bklog: only log tracing ids when span exporter not nil

Signed-off-by: Morlay <[email protected]>

* Refactor url redacting util

Signed-off-by: CrazyMax <[email protected]>

* Clean up old TODOs

Signed-off-by: Tonis Tiigi <[email protected]>

* Move config parsing to a dedicated pkg

Signed-off-by: CrazyMax <[email protected]>

* Generate and embed build sources

Signed-off-by: CrazyMax <[email protected]>

* resolver: use different mutext for handlers and hosts

hosts mutex is called on initialization, meaning `GetResolver` might
block if it is in the middle of auth exchange. This is currently bad
in the case where Job initialization needs to register a name before
timeout is reached.

Signed-off-by: Tonis Tiigi <[email protected]>

* resolver: make sure authorizer is not overwritten on other resolvers 

Authorizer stores the current session.Group so if it is
overwritten for another resolver it means that session might
have been dropped and authentication will fail.

Signed-off-by: Tonis Tiigi <[email protected]>

* solver: increase timeout for job registration

Signed-off-by: Tonis Tiigi <[email protected]>

* go.mod: sort and move self-managed indirect dependencies to first block

Signed-off-by: Koichi Shiraishi <[email protected]>

* Fix issues moby#1980 and moby#2198

Signed-off-by: Jonathan Giannuzzi <[email protected]>

* Add BUILDKIT_SANDBOX_HOSTNAME build-arg

Signed-off-by: CrazyMax <[email protected]>

* Fix estargz compression loses the original tar metadata

Currently, eStargz compression doesn't preserve the original tar metadata
(header bytes and their order). This causes failure of `TestGetRemote` because
an uncompressed blob converted from a gzip blob provides different digset
against the one converted from eStargz blob even if their original tar (computed
by differ) are the same.
This commit solves this issue by fixing eStargz to preserve original tar's
metadata that is modified by eStargz.

Signed-off-by: Kohei Tokunaga <[email protected]>

* Enhance ANSI color for progress ui

Signed-off-by: CrazyMax <[email protected]>

* Move resolver config to a dedicated package

Signed-off-by: CrazyMax <[email protected]>

* Standard user umask for git process

Signed-off-by: CrazyMax <[email protected]>

* make sure ci runs on version branches

Signed-off-by: Tonis Tiigi <[email protected]>

* return an error instead of panicking when failing to get edge

Signed-off-by: Maxime Lagresle <[email protected]>

* Add support for shm size

Signed-off-by: CrazyMax <[email protected]>

* don't cast Value when pipe is errored

Signed-off-by: Maxime Lagresle <[email protected]>

* Apply Earthly changes to newer buildkit version

This commit squashes previous work done in the earthly-main branch
199ad6a into a single commit
which is rebased against moby/master branch d429b0b

Co-authored-by: Tõnis Tiigi <[email protected]>
Co-authored-by: Akihiro Suda <[email protected]>
Co-authored-by: Akihiro Suda <[email protected]>
Co-authored-by: Aaron Lehmann <[email protected]>
Co-authored-by: Cory Bennett <[email protected]>
Co-authored-by: Justin Chadwell <[email protected]>
Co-authored-by: Erik Sipsma <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Levi Harrison <[email protected]>
Co-authored-by: ktock <[email protected]>
Co-authored-by: masibw <[email protected]>
Co-authored-by: Morlay <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Claudiu Belu <[email protected]>
Co-authored-by: Sebastiaan van Stijn <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sebastiaan van Stijn <[email protected]>
Co-authored-by: Anders F Björklund <[email protected]>
Co-authored-by: CrazyMax <[email protected]>
Co-authored-by: Koichi Shiraishi <[email protected]>
Co-authored-by: Jonathan Giannuzzi <[email protected]>
Co-authored-by: Maxime Lagresle <[email protected]>
sarahhodne pushed a commit to sarahhodne/buildkit that referenced this issue Aug 22, 2022
Signed-off-by: Jonathan Giannuzzi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants