Docker BuildKit caching w/ --cache-from fails (roundly 50% rate), even when using docker-container
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 10.3k
- Forks
- 1.5k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 48
Description
Version information:
- OS: Ubuntu 20.04.2 LTS, x86_64
- Docker Server: 20.10.7
- Docker Client: 20.10.7
- docker buildx version: v0.5.1-docker
- BuildKit: moby/buildkit:v0.9.0
Steps to reproduce
Create Dockerfile:
FROM busybox AS stage-1
RUN echo "Hello, world!!!"
COPY changed.txt /opt/changed.txt
FROM busybox
COPY --from=stage-1 /opt/changed.txt /opt/changed.txt
Run script like (REGISTRY shoud be replaced by actual value):
#!/bin/bash
# Recreate builder for clear local cache
docker buildx rm cachebug || true
docker buildx create --name cachebug --driver docker-container
docker buildx inspect cachebug --bootstrap
# Create some changed file
date > changed.txt
# Run
REGISTRY=registry.example.net/test-docker/example
docker buildx build \
--builder cachebug \
--push \
--tag $REGISTRY:latest \
--cache-from type=registry,ref=$REGISTRY:buildcache \
--cache-to type=registry,ref=$REGISTRY:buildcache,mode=max \
--platform linux/amd64 \
--platform linux/arm64 \
.
What I see: When I run the above script multiple times, step RUN echo "Hello, world!!!" fails cache roundly every second time for one of platform (I have not seen the problem with the cache at the same time on all platforms).
For example:
=> CACHED [linux/arm64 stage-1 2/3] RUN echo "Hello, world!!!" 0.3s
=> => sha256:e2f4ee50b555089a69b84af6621283565af19e3bcf0596b36ba5feec7b96d1d7 116B / 116B 0.2s
=> => sha256:38cc3b49dbab817c9404b9a301d1f673d4b0c2e3497dbcfbea2be77516679682 820.69kB / 820.69kB 0.6s
=> => extracting sha256:38cc3b49dbab817c9404b9a301d1f673d4b0c2e3497dbcfbea2be77516679682 0.1s
=> => extracting sha256:e2f4ee50b555089a69b84af6621283565af19e3bcf0596b36ba5feec7b96d1d7 0.1s
=> [linux/amd64 stage-1 2/3] RUN echo "Hello, world!!!" 0.3s
=> [linux/amd64 stage-1 3/3] COPY changed.txt /opt/changed.txt 0.2s
=> [linux/arm64 stage-1 3/3] COPY changed.txt /opt/changed.txt 0.2s
Update (2021-08-18)
Repository to reproduce issue: https://github.com/bozaro/buildkit-2279 (simply checkout and run ./test.sh).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the reproduction repository linked in the update and run ./test.sh, then compare it with the Dockerfile and docker buildx command in the issue. Trace the multi-platform registry-cache behavior for the docker-container builder. Done means repeated builds consistently reuse the RUN cache for both linux/amd64 and linux/arm64.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, dockerfile, go, shell
- Domain
- build-system, devops, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100