BuildKit Builder ãšã³ãžã³ãDockerfile 1.4 ããã³ããšã³ãã Docker Buildx CLI ã®æ°ããããŒãžã§ã³ããªãªãŒã¹ããŸããããããã®ããããã«ã¯ãå€ãã®æ°æ©èœãä»å±ããŠããŸãã ãã®ããã°æçš¿ã§ã¯ããã®ãã¡ã®1ã€ã§ããDockerfilesã®æ°ããã³ããŒã¢ãŒãã瀺ããDockerfilesã§ããã䜿ãå§ããå¿ èŠãããçç±ã説æããŸãã
Dockerfile 1.4 ãªãªãŒã¹ã§ã¯ããã«ãã³ã³ããã¹ããŸãã¯å¥ã®ã¹ããŒãžãããã¡ã€ã«ãã³ããŒããããã®ã³ãã³ã ADD ãšã³ãã³ããã COPY æ°ãããã©ã° 'âlink' ãåãå
¥ããããã«ãªããŸããããã®ãã©ã°ã䜿çšãããšããã£ãã·ã¥ ã»ãã³ãã£ã¯ã¹ã倧å¹
ã«åäžããæ°ããåºæ¬ã€ã¡ãŒãžã®äžã«ãã«ããåæ§ç¯ããã« 2 æ¥ç®ã®é«éãªããŒã¹ãå®è¡ã§ããŸãã
ãã®ãã©ã°ã䜿çšããã«ã¯ãDockerfile ã®å
é ã« ãå«ã # syntax=docker/dockerfile:1.4 è¡ã远å ããå¿
èŠããããŸãã ããã«ããããã®ãã©ã°ããµããŒãããé©åãªããã³ããšã³ãã€ã¡ãŒãžãèªã¿èŸŒãŸããŸãã ãã©ã°ã®æ£ãããã£ãã·ã¥ã»ãã³ãã£ã¯ã¹ãååŸããã«ã¯ãBuildKit v0.10 ã䜿çšããå¿
èŠããããŸãã
# syntax=docker/dockerfile:1.4 FROM ... COPY --link foo bar
docker buildx create --use --name mybuilder
docker buildx build .
ãã®æ°ãããã©ã°ã®æ©èœã®è©³çްã«å ¥ãåã«ãçŸæç¹ã§Dockerfileã³ãã³ããã©ã®ããã«æ©èœããããèŠãŠãããŸãããã
Docker ã€ã¡ãŒãžã¯ãã³ã³ãã㌠ãã¡ã€ã« ã·ã¹ãã ãæ§æããã¬ãžã¹ããªå ã® tar ããŒã«ã§ããã¬ã€ã€ãŒã§æ§æãããŸãã ç»åããã«ãããšããããã®tarããŒã«ãéãªãåã£ãŠæœåºãããŸãã ãã®æœåºãã©ã®ããã«è¡ããããã¡ã€ã«ãå®éã«ãã£ã¹ã¯ã«æ ŒçŽããããã®å®è£ ã¯ãåºã«ãªãã¹ãããã·ã§ããäœæè ã®çš®é¡ã«ãã£ãŠç°ãªããŸãã ãªãŒããŒã¬ã€ã¹ãããã·ã§ããã䜿çšããå Žåããã¡ã€ã«ã·ã¹ãã ã¯è€æ°ã®ãã£ã¬ã¯ããªã1ã€ã«çµåããç¹å¥ãªããŠã³ããäœæã§ããŸãã ä»ã®ã¹ãããã·ã§ããäœæè ã®å Žåããã®ããã»ã¹ã«ã¯éåžžããã¡ã€ã«ã®(æµ ã)ã³ããŒã®äœæãå«ãŸããŸãã
Dockerfile RUNã®ãã¹ãŠã® ããŸãã¯ADD ã³ãã³ãã¯ã COPY 以åã«äœæãããã³ã³ãã³ãã®äžã«è¿œå ãããæ°ããã¹ãããã·ã§ãããäœæããŸãããã«ãã®æºåãã§ããŠããã«ãçµæãšããŠã€ã¡ãŒãžããšã¯ã¹ããŒãããå Žåã¯ããã¹ãŠã®ã¹ãããã·ã§ãããæ¯èŒããåã¹ãããã·ã§ããã«è¿œå ãããæ°ãããã¡ã€ã«ãå«ãæ°ããtarballãäœæãããç°ãªããã³ã³ããŒãã³ããå®è¡ããŸãã
ããã§çè§£ããŠããã¹ãéèŠãªæŠå¿µã¯ãæ°ããã¬ã€ã€ãŒãäœæããã«ã¯ãåã®ã¬ã€ã€ãŒ(芪ã¬ã€ã€ãŒãšãåŒã°ããŸã)ã以åã«äœæããããã£ã¹ã¯äžã«ååšããå¿
èŠããããšããããšã§ãã ã³ãã³ãã䜿çšããŠäžéšã®ãã¡ã€ã«ããã£ã¬ã¯ããªã«ç§»åãããã³ã«Â COPY ãåãã¹ããŒãžäžã®ä»¥åã®ãã¹ãŠã®ã³ãã³ããåã«å®äºããå¿
èŠããããŸããã ããããªããšããã¡ã€ã«ã®ã³ããŒå
ãã£ã¬ã¯ããªããªããªããŸãã
ãã®å¶éã¯ãã³ãã³ã ADD ã«Â COPY 远å ãããæ°ãã --link ãã©ã°ã§å€æŽãããŸãããã®ãã©ã°ãååšããå Žåãã³ãã³ãã¯å¥ã®ã¢ãŒãã§åäœãã COPY 代ããã«ãã¡ã€ã«ãå®å
šã«æ°ããã¹ãããã·ã§ããã«ã³ããŒãããŸãã æ¬¡ã«ããã®æ°ããã¹ãããã·ã§ããã¯ããèªäœã§æ°ããã¬ã€ã€ãŒtarballã«å€æããããã®tarballã¯ä»¥åã®tarballã¬ã€ã€ãŒã®ãã§ãŒã³ã«ãªã³ã¯ãããŸãã ãã®ãªã³ã¯ã¢ã¯ã·ã§ã³ã¯éåžžããã¡ã€ã«ã«ã¢ã¯ã»ã¹ãããç§»åãããããããšãªããæ°ããã¢ã€ãã ãã¬ã€ã€ãŒé
åã«è¿œå ãããåãªãã¡ã¿ããŒã¿ã®å€æŽã§ãã æ¬¡ã®äŸã«ç€ºãããã«ããªã¢ãŒãã¬ãžã¹ããªã«ååšããã¬ã€ã€ãŒã䜿çšããŠãªã¢ãŒãã§å®è¡ããããšãã§ãããã«ãŸãã¯ããã·ã¥ããå¿
èŠã¯ãããŸããã

èŠçŽãããš:
COPY --link=false (åã®æ¹æ³ãšããã©ã«ã):ãã¡ã€ã«ã¯åã®ã³ãã³ãã®çµæã®äžã«ã³ããŒãããŸã ã¬ã€ã€ãŒã¯ããã£ã¹ã¯äžã®ã¹ãããã·ã§ãããæ¯èŒããããšã«ãã£ãŠåŸã§äœæãããŸãCOPY --link=true: ãã¡ã€ã«ãæ°ããå Žæã«ã³ããŒãããç¬ç«ããã¬ã€ã€ãŒã«å€æãããŸãã ã¬ã€ã€ãŒèå¥åãåã®ã¬ã€ã€ãŒã®äžã«è¿œå ãããŸã
å®å
ãã£ã¬ã¯ããªããäŸåé¢ä¿ãåé€ããããšã§ãã³ãã³ããå®äºãã COPY åã«åã®ã³ãã³ããå®äºããã®ãåŸ
ã€å¿
èŠããªããªããŸãã ãŸããåã Dockerfile ã¹ããŒãžäžã®ä»¥åã®ã³ãã³ãã倿Žããããšãã«ãçŸåšã®ã³ãã³ãã®ãã«ããã£ãã·ã¥ãç¡å¹ã«ããå¿
èŠããããŸããã
ããã«ããå¯èœã«ãªããŠãŒã¹ã±ãŒã¹ã®äŸãããã€ãèŠãŠã¿ãŸãããã
äŸ: æ¢åã®ã€ã¡ãŒãžã®ãªããŒã¹
BuildKit v0.9 ã®ä»¥åã®ãªãªãŒã¹ã§ã¯ãé å»¶ã€ã¡ãŒãžã®ãã«ãšããå¥ã®æ°æ©èœãå°å ¥ãããŸããã ãã®æ©èœãæå³ããã®ã¯ãBuildKitããªã¢ãŒãã€ã¡ãŒãž/ãã£ãã·ã¥ã«ã¢ã¯ã»ã¹ããå¿ èŠããããšãã¯ãã€ã§ããå®éã«ããããããã¡ã€ã«ãèªã¿åãå¿ èŠãããã¿ã¹ã¯ããããŸã§ãã¬ã€ã€ãŒã®ãã«ãé ããããšããããšã§ãã ããšãã°ãã¬ã€ã€ãŒãå¥ã®ã€ã¡ãŒãžã§äœ¿çšãããŠããå Žåããã®ãã«ã¯äžèŠã§ãããBuildKitã¯ãäžå€ã®ãã€ãžã§ã¹ãã«ãã£ãŠåã®ã¬ã€ã€ãŒãåç §ããæ°ããã€ã¡ãŒãžãäœæã§ããŸãã
FROM ubuntu ENV MYCONFIG=foo VOLUME /data
ããšãã°ããã® Dockerfile ãæ¬¡ã®ããã«ãã«ããããšããŸãã docker buildx build -t myuser/myubuntu --push . ãã£ãã·ã¥ã®ãªãã¯ãªãŒã³ãªã·ã¹ãã ã§ã¯ãæ°ããã€ã¡ãŒãžããªããžããªã§æºåããããŸã§ã«ãã«ãå
šäœãæ°ç§ããããããªãããšã«æ°ä»ãã§ãããã ããã¯ãubuntuã€ã¡ãŒãžã®ã¬ã€ã€ãŒãããŒã«ã«ãã·ã³ã«ãã«ããããããããªããžããªã«ããã·ã¥ããããããªãããã§ãã 代ããã«ãBuildKit 㯠Ubuntu ã¬ã€ã€ãŒãã€ãžã§ã¹ããå«ãæ°ããã€ã¡ãŒãžæ§æãšãããã§ã¹ããäœæãããããã®ã¿ãããã·ã¥ããŸãã ã¬ã€ã€ãŒã¯ãã¬ãžã¹ããªã®ã¯ãã¹ãªããžããªããŠã³ãæ©èœã䜿çšããŠãUbuntuãªããžããªããçŽæ¥ãªã³ã¯ãããŸãã ãã®ãã¿ãŒã³ã¯ããªã¢ãŒããã£ãã·ã¥ããŸã ææ°ã§ãããå®éã«ã¯ã¬ã€ã€ãŒããã«ããŠã³ããªãããšããã«ãã§æ€èšŒããå¿
èŠããããªã¢ãŒããã£ãã·ã¥ãœãŒã¹ã§ã䜿çšã§ããŸãã
ãã®æ¹æ³ã¯ãç»åæ§æã®ã¿ã倿ŽãããããªÂ ENV VOLUME ã¡ã¿ããŒã¿ã³ãã³ãã«é©ããŠããŸããã RUN ã®ãããªÂ COPYæ°ããã¬ã€ã€ãŒãäœæããã³ãã³ãã䜿çšããå Žåã§ãããããã®ã³ãã³ããå®è¡ããã«ã¯ããŒã«ã«ãã¡ã€ã«ãå¿
èŠãªãããããŒã¹ã€ã¡ãŒãžãæåã«ãã«ããå¿
èŠããããŸããã
COPY --link ãã®èŠä»¶ãåé€ããŸãã ã䜿çšããããã«Â COPY --linkæŽæ°ãããäžè¬çãªãã«ãã¹ããŒãžãã«ãDockerfileãèŠãŠã¿ãŸãããã
#syntax=docker/dockerfile:1.4 FROM golang AS build .... RUN go build -o /myapp . FROM alpine:3.14 COPY --from=build --link /out/myapp /bin ENTRYPOINT ["/bin/myapp"]
BuildKit v0.10 ã§ãã®ãã¡ã€ã«ããã«ããããšãæåã«æ°ä»ãã®ã¯ãAlpine ã€ã¡ãŒãžããã«ããã«ãã«ããå®äºããŠããããšã§ãã ããã¯ããã£ã¬ã¯ããªãžã®ã³ããŒÂ myapp ã /bin/ Alpineãã¡ã€ã«ã«äŸåããªããªã£ãããã§ãã ãã®ã€ã¡ãŒãžãå¥ã® Docker Hub ãªããžããªã«ããã·ã¥ãããšãã¢ã«ãã€ã³ ã¬ã€ã€ãŒãçŽæ¥ãªã³ã¯ãããŸãã ä»ã®æ¹æ³(ããšãã°ãããŒã«ã«OCItarballã«Â --output type=oci)ã§ã€ã¡ãŒãžããšã¯ã¹ããŒãããå Žåã«ã®ã¿ãã¬ã€ã€ãŒãå®éã«ãã«ãããŸãã
ããã§ããã®ã€ã¡ãŒãžãåããŠãã«ãããŠããã·ã¥ãããšãã«ãå°æ¥ãã®ã€ã¡ãŒãžãæŽæ°ããå¿ èŠãããå Žåã«äœãèµ·ãããã確èªã§ããŸãã ã»ãã¥ãªãã£ä¿®æ£ãå«ãæ°ããAlpine 3.14ã€ã¡ãŒãžããªãªãŒã¹ãããå ŽåããŸãã¯3.15ã«æŽæ°ããå Žåã
ãã¹ãŠãåæ§ç¯ããªãããã«ã以åã®ãã«ãã®ãªã¢ãŒããã£ãã·ã¥ãä¿åã§ããŸãã BuildKitã¯å€ãã®ãã£ãã·ã¥ããã¯ãšã³ãããµããŒãããŠããŸããããã®å Žåãæãç°¡åãªã®ã¯ããã«ããã£ãã·ã¥æ å ±ãã€ã¡ãŒãžæ§æã«åã蟌ãã ãã®ãã€ã³ã©ã€ã³ãã£ãã·ã¥ãã䜿çšããããšã§ãã
ã€ã³ã©ã€ã³ãã£ãã·ã¥ãæå¹ã«ããã«ã¯ã次ã®ãããããå®è¡ããŸãã
docker buildx build --cache-to type=inline --push -t mysuser/myapp .
åã¯
docker buildx build --build-arg BUILDKIT_INLINE_CACHE=1 --push -t mysuser/myapp .
ããã§ãåŸç¶ã®ãã«ããå®è¡ãããšãã«ãã€ã¡ãŒãžèªäœããã£ãã·ã¥ãœãŒã¹ãšããŠäœ¿çšã§ããŸãã ããšãã°ã代ããã« Alpine 3.15 ã䜿çšããããã«ä»¥åã® Dockerfile ãæŽæ°ãã以åã®ãã£ãã·ã¥ã䜿çšããŠãã«ããããšã©ããªãããèŠãŠã¿ãŸãããã
FROM golang AS build .... FROM alpine:3.15 COPY --from=build --link /out/myapp /bin/ ENTRYPOINT ["/bin/myapp"]
docker buildx build --cache-from myuser/myapp -t myuser/myapp --push .
æåã®ãã«ããšåæ§ã«ãå®éã«ã¯Â alpine:3.15 ããŒã«ã« ã³ã³ãã¥ãŒã¿ãŒã«ãã«ãããã代ããã«ã¬ã€ã€ãŒ BLOB ãã¬ãžã¹ããªå
ã«çŽæ¥ç§»åãããŠããããšãããããŸãã ãã£ãšè峿·±ãã®ã¯ãç»åãåŒã£åŒµãããªãã£ãããšã§ã golang ã ããã¯ããã€ããªã倿ŽãããŠããªãããšã確èªÂ myapp ã§ãããããã€ã¡ãŒãžã®2çªç®ã®ã¬ã€ã€ãŒã倿ŽãããŠããããæ°ããé«å±±ã€ã¡ãŒãžã®äžã«ãªããŒã¹ã§ããããã§ãã ããã¯ãã¹ãŠãããŒã«ã«ã¬ã€ã€ãŒãªãã§å®å
šã«ãªã¢ãŒãã§è¡ãããŸãã
æäœã¯Â COPY /bin ããŒã¹ã€ã¡ãŒãžã®ãã£ã¬ã¯ããªã«äŸåããããŒã¹ã€ã¡ãŒãžã倿Žããããããã£ãã·ã¥ãç¡å¹ã«ãªããAlpineãšGolangã®äž¡æ¹ã®ã€ã¡ãŒãžããã«ããããã€ããªã myapp åã³ã³ãã€ã«ããããããããããªããšÂ --link 以åã¯äžå¯èœã ã£ãããšã«æ³šæããŠãã ããã
äŸ: ãªã¢ãŒãã»ãã£ãã·ã¥ã»ãµããŒãã®æ¹å
å¥ã®äŸãšããŠãè€æ°ã®Â COPY ã³ãã³ããããå Žåã®ãã£ãã·ã¥ã®åŠçæ¹æ³ãèŠãŠã¿ãŸãããã
#syntax=docker/dockerfile:1.4 FROM golang AS build .... RUN go build -o /myapp . FROM ubuntu AS config ... RUN generate -o /myapp.config FROM alpine:3.14 COPY --from=config --link /myapp.config /etc/ COPY --from=build --link /myapp /bin/ ENTRYPOINT ["/bin/myapp"]
ãã®ãã¡ã€ã«ã«ã¯ãå¥ã®ãã«ãã¹ããŒãžããçæãããæ§æãã¡ã€ã«ã远å ãã2çªç®ã®ã³ããŒã远å ããŸããã äŸåé¢ä¿ã«è€æ°ã®ã¹ããŒãžã䜿çšããæçµã¹ããŒãžã§ãããããã¹ãŠäžç·ã«ã³ããŒããããšã¯éåžžã«äžè¬çãªãã¿ãŒã³ã§ãã ããã¯ããã«ãã«æé©ãªäžŠååãšãã£ãã·ã¥ã®åå©çšãå®çŸããæ¹æ³ã§ãã
以åãšåãããã«ãã€ã³ã©ã€ã³ãã£ãã·ã¥ã䜿çšããŠãã®Dockerfileããã«ãããŠããã·ã¥ãããšããŸãã
docker buildx build --cache-to type=inline -t myuser/myapp2 --push .
次ã«ã以åã®ã€ã³ã©ã€ã³ãã£ãã·ã¥ã䜿çšããŠåæ§ç¯ãè¡ãå¿ èŠããããæ§æãã¡ã€ã«ã®çæã倿Žãããå Žåã«äœãèµ·ããããèããŠã¿ãŸãããã æ§æçæã®ã¹ããŒãžãå床å®è¡ããå¿ èŠããããŸãããæåŸã®ã¹ããŒãžã¯ã©ããªããŸãã?
䜿çšÂ --linkããã«ããã¡ã€ã«ã®å Žå myapp.configÂ å€æŽãããã®ã¯ãã¢ã«ãã€ã³ã®ç»åããã«ãããŠæœåºãããããšãæå³ããŸããmyapp.config ãã®ã¹ãããã·ã§ãããã³ããŒãããã®äŸåé¢ä¿Â COPY myapp ã倿Žããããããåã³ã³ãã€ã«ããŠå床ã³ããŒããå¿
èŠããããŸããããã§ã®ãã£ãã·ã¥ã®åå©çšã®å¯èœæ§ã¯ã³ãã³ãã®é åºã«äŸåãããã£ãã·ã¥ã¯ãã£ãã·ã¥ã«äžèŽããæåŸã®Â COPY ã³ãã³ããŸã§äœ¿çšã§ãããã以éã®ãã¹ãŠã®ã³ãã³ãã¯å床å®è¡ããå¿
èŠãããããšã«æ³šæããŠãã ããã ã®ãã£ãã·ã¥Â myapp ãç¡å¹ã«ãªã£ãŠãããšããŠãã myapp.config ãã®ãã¡ã€ã«ã¯ä»¥åã«ã³ããŒããããããã®éã§ã¯ãªãããã§ãã
ã远å ããããšÂ --linkã§ããã£ãã·ã¥ã®åå©çšã倧å¹
ã«åäžããŸããã ãã¹ãŠã®ã³ãã³ããç¬ç«ãã COPY ããŒã¹ã€ã¡ãŒãžã«äŸåããã³ãã³ãã¯ãããŸããã æ°ããæ§æãçæããããšãæ°ããã¬ã€ã€ãŒã«çŽæ¥å€æãããŸãã æ¬¡ã«ããã®ã¬ã€ã€ãŒãåã®ç»åå
ã§çœ®ãæããããŸãã ããŒã¹ã€ã¡ãŒãžã®æäžå±€ãšãããå«ã myapp æäžå±€ã¯ãã®ãŸãŸæ®ãããããŒã«ã«ãã·ã³ã«ãã«ããå¿
èŠã¯ãŸã£ãããããŸããã æ°ããã¬ã€ã€ãŒã®ã¿ãæ°ããã€ã¡ãŒãžãããã§ã¹ããšäžç·ã«ããã·ã¥ãããŸãã

ãšã®éã --link=false
æ°ããã»ãã³ãã£ã¯ã¹ãèªåçã«äœ¿çšããããã«ãã¹ãŠã®ã³ãã³ãã倿Žããã®ã§ã¯ãªãã COPY ãªãæ°ãããã©ã°ã远å ãããã®ãäžæè°ã«æããããããŸããã ãã®çç±ã¯ããŸãã«å®å
šãªäžäœäºææ§ããªãããã§ãã ããšãã°ãã³ã㌠ã³ãã³ã COPY myapp /path/to/myappã . æå®ãã /path/to/myapp å®å
ãã£ã¬ã¯ããªã«ã³ã³ããŒãã³ãã®1ã€ã«ã·ã³ããªãã¯ãªã³ã¯ãå«ãŸããŠããå Žåã¯ãããã«åŸãã代ããã«ãã¡ã€ã«ãã·ã³ããªãã¯ãªã³ã¯ã¿ãŒã²ããã«ã³ããŒãããŸãã ã䜿çšãããšÂ --linkããã¹ãŠã®ã³ããŒãç¬ç«ããŠãããã³ããŒå
ã®ãã¹ã«å«ãŸãããã¡ã€ã«ã確èªããããšã¯ã§ããŸããã ãããã£ãŠãã·ã³ããªãã¯ãªã³ã¯ããã©ã代ããã«ãæåã«åžžã«æ°ãããã£ã¬ã¯ããª/path/to ãäœæãã COPY --link myapp /path/to/myapp ãã®äžã«ãã¡ã€ã«ãã³ããŒããŸãã
ããªããèŠããããããªãå¥ã®ã±ãŒã¹ã¯ã®ãããªã³ãã³ã COPY myapp /usr/binã§ãã å®å
ãã¹ãã¹ã©ãã·ã¥ã§çµãã£ãŠããªãããšã«æ³šæããŠãã ããã 以åã®ã»ãã³ãã£ã¯ã¹ããªããã°Â --link ã ããã£ã¬ã¯ããªã§ãããã©ãã /usr/bin ããã§ãã¯ããŠããã§ãããã ããã§ããå Žåããã¡ã€ã«ã¯ ãšããŠã³ããŒÂ /usr/bin/myappãããŸãã ããã§ãªãå Žåãæ°ãããã¡ã€ã«ã¯éåžžã®ãã¡ã€ã«Â bin ãšããŠã³ããŒÂ /usrãããŸãããããã®çš®é¡ã®ãã§ãã¯ã§ã¯ããã£ã¹ã¯äžã®ãã¡ã€ã«ãæœåºããŠããã®ã¿ã€ããæ€èšŒã§ããããã«ããå¿
èŠãããã ã§ã¯Â --linkèš±å¯ãããŸããã --linkãããã£ãŠãã䜿çšããå Žåã¯ãå®å
ãã¹ã«ã·ã³ããªãã¯ãªã³ã¯ãå«ãŸããŠããªãããšã確èªãããããŸããªå®å
ãã£ã¬ã¯ããªæ€åºã䜿çšããªãããã«ããå¿
èŠããããŸãã
äžèšã®ã±ãŒã¹ã¯éåžžã«ãŸãã§ãããåçŽãªDockerfileã®å€æŽã§ç°¡åã«ä¿®æ£ã§ããã¯ãã§ãã ã³ãã³ãã§Â COPY ã·ã³ããªãã¯ãªã³ã¯ã«äŸåããªãå Žåã¯ãåžžã«äœ¿çšÂ --linkãéå§ããããšããå§ãããŸãã ãªã³ã¯ãããã³ããŒã®ããã©ãŒãã³ã¹ã¯ãåžžã«éåžžã®ã³ããŒãããåªããŠãããåçã§ããå¿
èŠãããããã«ãã®ãã£ãã·ã¥ã®åå©çšãšæé©åã倧å¹
ã«åäžããŸãã
ã®å
éšæ§é ã«Â COPY --linkãã£ãšèå³ãããå Žåã¯ãBuildKit ã® LLB å®çŸ©ã®æ°ãã MergeOp æ©èœãå©çšããŠããŸãã MergeOp ã®è©³çްãšãæŠå¿µçã«ã¯ MergeOp ã®éã§ããã³ã³ãããªã³ DiffOp æ©èœã«ã€ããŠã¯ã BuildKit ã®ããã¥ã¡ã³ããåç
§ããŠãã ããã