buildkit icon indicating copy to clipboard operation
buildkit copied to clipboard

Additional contexts should not send unused files

Open gabs79 opened this issue 2 years ago • 2 comments

Issue

Why additional context (ctx2 example below) transfers unused files to the daemon even when they are not used? Note, the main context skips unused files.

I would expect the same behavior for skipping unused files when using multiple contexts

Steps to reproduce:

$ mkdir tmp ctx2 && cd ctx2
$ touch ctx2_used
$ head -c 3MB /dev/urandom > ctx2_unused
$ cd ../tmp
$ touch used
$ head -c 2MB /dev/urandom > unused
$ echo -e "#syntax=docker/dockerfile:1.4 \n FROM ubuntu\n COPY used tmp/ \n COPY --from=ctx2 ctx2_used tmp/" > Dockerfile
$ docker buildx build -t two-contexts --build-context=ctx2=../ctx2 .

see ctx2 transferring 3.00MB in image. My actual use case, in terms of size, is way bigger than this. transferring_unused_additional_context

Environment:

docker -v

Docker version 20.10.17, build 100c701

docker info

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 2
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 0197261a30bf81f1ee8e6a4dd2dea0ef95d67ccb
 runc version: v1.1.3-0-g6724737
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-372.13.1.el8_6.x86_64
 Operating System: Rocky Linux 8.6 (Green Obsidian)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 3.644GiB
 Name: dd-rocky8
 ID: 7WUG:QLRD:XFM4:H2AM:U42E:AF3C:PXS5:T6ZW:CMH2:AWPQ:DVXI:EOUG
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

gabs79 avatar Nov 16 '22 20:11 gabs79