-
Notifications
You must be signed in to change notification settings - Fork 631
Images created with buildx sometimes have layers that are incorrect/zero bytes #637
Description
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 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 <mbentley@mbentley.n… 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 <mbentley@mbentley.n… 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