อัปเดต 2019
เริ่มต้นจากการเทียบท่า v18.06 มีตัวเลือกที่จะใช้ภาพใหม่ที่เรียกว่าสร้างชุดรูปร่าง
มาพร้อมกับ Docker โดยไม่จำเป็นต้องติดตั้งอะไรเลย เข้ากันได้กับDockerfile
ไวยากรณ์แบบย้อนหลังโดยไม่จำเป็นต้องเปลี่ยนไฟล์Dockerfile
.
Legacy Docker Build เทียบกับ Docker BuildKit ใหม่
นี่คือตัวอย่างของการสร้างอิมเมจด้วยไฟล์ขนาดใหญ่ที่ไม่ได้ใช้ในไดเร็กทอรี build:
Legacy Docker Build:
$ time docker image build --no-cache .
Sending build context to Docker daemon 4.315GB
[...]
Successfully built c9ec5d33e12e
real 0m51.035s
user 0m7.189s
sys 0m10.712s
ใหม่ Docker BuildKit:
$ time DOCKER_BUILDKIT=1 docker image build --no-cache .
[+] Building 0.1s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
[...]
=> => writing image sha256:ba5bca3a525ac97573b2e1d3cb936ad50cf8129eedfa9 0.0s
real 0m0.166s
user 0m0.034s
sys 0m0.026s
การเปลี่ยนแปลงเพียงอย่างเดียวคือDOCKER_BUILDKIT=1
ตัวแปรสภาพแวดล้อมความแตกต่างของเวลามีมาก
.dockerignore
ไฟล์
โปรดทราบว่า.dockerignore
ไฟล์ยังคงถูกต้องและมีประโยชน์ บางDockerfile
คำสั่งเช่นCOPY . .
จะยังคงคำนึงถึง.dockerignore
กฎ แต่ไฟล์ด้านข้างในไดเร็กทอรี build (ไม่ได้อ้างอิงในDockerfile
) จะไม่ถูกคัดลอกอีกต่อไปในฐานะ "build context" โดย BuildKit