éĢåēĻãĒ Docker ããĢã
ã¤ãĄãŧã¸ãŽããĢãã¯ããŗãŗãããæäŊããéãŽä¸čŦįãĒæšæŗã§ãã ããããããã¯ãŠãŽãããĢæŠčŊããžãã? ããĢããŧã¨ã¯äŊã§ãã? ãžããããĢãéåēĻã¨ããŖããˇãĨäŊŋį¨éãæå¤§åãããããĢããŠãŽãããĒæ§æãĒããˇã§ãŗããããžãã?
ããŽãģããˇã§ãŗã§ã¯ãããããŽãããã¯ã¨ãäģãŽããã¤ããŽéĢåēĻãĒããĢã ãããã¯ãĢã¤ããĻčŠŗããčĒŦæããžãã BuildKit 㨠buildxããĒãĸãŧã ããŖããˇãĨįŽĄįãããĢããĸãŧããã¯ããŖ ããĢããĒãŠãĢã¤ããĻåĻįŋããžãã ãžããDocker Build Cloud ãäŊŋį¨ããã¨ãããšãĻãŽã¤ãŗããŠãšããŠã¯ããŖã¨æ§æãčĒåã§įŽĄįãããã¨ãĒããããããŽéĢåēĻãĒãããã¯ãį°ĄåãĢåŽčĄã§ããæšæŗãŽäžãããã¤ãį´šäģããžãã
åã
ãããĢãĄã¯ãããŽãģããˇã§ãŗã§ã¯ãéĢåēĻãĒããĢããŽãããã¯ãĢã¤ããĻčŠŗããčĒŦæããžãã ããŠãŧãĢãšã¨ãĒãĸã¯åēæŦįãĢãDockerfileã¨åŽéãĢããĢããããã¤ãĄãŧã¸ãŽéãŽããšãĻã§ãããããĢãä¸ãĢåŽéãĢäŊãčĩˇããããĢįĻįšãåŊãĻãĻããžãã ãŠãŽãããĒããŧãĢãéĸäŋããĻããžãã? ããĢããããŠãŧããŗãšãæå¤§åãããĢã¯ãŠãããã°ããã§ãããã? ãŠãŽãããĒãĒããˇã§ãŗããããžãã? įš°ãčŋããĢãĒããžãããDockerfile ã¨åŽéãĢããĢããããã¤ãĄãŧã¸ãŽéãŽããšãĻã§ãã ããŽãããĢãį§ããĄã¯ããŽãĸã¸ã§ãŗããĢåžããžãã ãžããã¤ãĄãŧã¸ããĢããŧããå§ããĻããŗãŗãããšããĢã¤ããĻå°ãã芹ãããžãã ããã§ã¯ãããĢããĸãŧããã¯ããŖã¤ãĄãŧã¸ãããŖããˇãĨįŽĄįãĒãŠãbuildxãĢäģåąããéĢåēĻãĒæŠčŊãŽä¸é¨ãĢã¤ããĻčĒŦæããžãã ãžããDocker BakeãĒãŠãããŽåéã§ãŽæ°ããĒéįēãĢã¤ããĻãã芹ãããžãã ãžããDockerã§DockerãäŊŋį¨ããããĒãå ´åãææãĢã¤ããĻã¯ãDockerã§DockerãĢã¤ããĻåŋé ããåŋ čĻããĒããããĢããäģãŽããŧãĢãĢã¤ããĻčĒŦæããžãã
įŽæŦĄ
- ã¤ãĄãŧã¸ããĢããŧã¨ãŗãŗãããšã (0:52)
- buildx ãŽäŊŋ፠(6:54)
- ããĢããĸãŧããã¯ããŖããĢã (13:22)
- ããŖããˇãĨįŽĄį (19:37)
- ãã¤ã¯ã§ããĢã (24:19)
- Docker in Docker (DinD) (27:00)
- čŠŗį´°æ å ą
ã¤ãĄãŧã¸ããĢããŧã¨ãŗãŗãããšã (0:52)
ãžããã¤ãĄãŧã¸ããĢããŧã¨ãŗãŗãããšããĢã¤ããĻã芹ãããžãããã įš°ãčŋããĢãĒããžãããåŽéãĢDockerããĢããŗããŗãã§Enterããŧãæŧãã¨ãŠããĒããžãã? ããĻããŦãŦãˇãŧããĢããŧãĢã¤ããĻå°ãæ å ąãæäžãããã¨ããå§ãããã¨ãéčĻã§ãã åēæŦįãĢãį§ããĄã¯ãŠãããæĨããŽã§ãããã? ããã¯ãDocker ã¨ãŗã¸ãŗãĢåĢãžããĻããå ãŽããĢããŧã§ãã ããŽãããDocker buildãåŽčĄããã¨ãããŽãŦãŦãˇãŧããĢããŧãäŊŋį¨ãããžããã ããĻããģã¨ããŠãŽå ´åãDockerfileãŽãšã¯ãĒãããĢåžãŖãĻã1ã¤ãŽåŊäģ¤ããæŦĄãŽåŊäģ¤ã¸ããããĻæŦĄãŽåŊäģ¤ã¸ã¨ã¤ãĄãŧã¸ãįæããã ãã§ããã ããããããã¯ããĒãåēæŦįãĒãã¨ã§ããããžããã ããĢããšããŧã¸ããĢããŽé常ãĢåēæŦįãĒãĩããŧãããããžããã ãããĻãžãã䏿Šä¸æŠčĒãã§ãããŽã§ãããšãĻãŽæį¤ēã¨é įĒãčĒãŋåããžããã ãããĻãããã¯åēæŦįãĢã夿ŽĩéããĢããŽįŽæ¨ãĢå°éãããžã§ãããčĄããžããã ããããŖãĻã褿°ãŽãšããŧã¸ãããå ´åãæįĩããĢããĢããåŋ čĻãĒããŖãä¸éãšããŧã¸ãæ§į¯ãããå¯čŊæ§ãããããžãã ããããįš°ãčŋããĢãĒããžãããããã¯åžæĨãŽããĢããŧãŽéįãŽä¸é¨ãĢãããžããã§ããã ãžããåžæĨãŽããĢããŧã§ã¯ãããĢããĸãŧããã¯ããŖãŽã¤ãĄãŧã¸ãåŽčĄãããã¨ãã§ããžããã ããããŖãĻãAMD 64ãæĻčŖ ãããåŋ čĻãããå ´åãããã¯ã§ããžããã§ããã ããã§ããé常ãĢãˇãŧãąãŗãˇãŖãĢãĒåąéã§ããã ãããDockerããĄã¤ãĢã§ãã ããããšã¯ãĒããã§ãã æŦĄãĢãã¤ãĄãŧã¸ãããĢãããžãã
ããŽããã 2017åš´é ãã¤ãžãããĒãåãŽãã¨ã§ãããæ°ããåãįĩãŋã¨BuildKitã¨ããæ°ãããĒãŧããŗãŊãŧãšããã¸ã§ã¯ãããžã¨ããããžããã ãããĻãBuildKitã¯ãããããŽåéĄãŽå¤ããįŊŽãæããĻäŋŽæŖãããããĢč¨č¨ãããĻããžãã ãããĻãããŽäģįĩãŋã¯ãįĩåąãŽã¨ãããé常ãĢäŊãŦããĢãŽããĢãåŽįžŠåŊĸåŧã§ããã¨ãããã¨ã§ãã åēæŦįãĢã¯ããšããããããŧããåŽčĄãč¨åŽãĒãŠãããšãĻãŽã°ãŠãããžã¨ããããĻããžãã ãããĢãããæįĩåēåãæ§į¯ãããããŽåŽčĄããŠãŗãäŊæã§ããžãã ã¤ãžããäģĨåã¯ããĢããé æŦĄãĢããé˛ããĒããŖããŽããäģã§ã¯ããĢããä¸ĻčĄããĻåŽčĄã§ãããããĢãĒãŖããŽã§ãã ãžããããã¯é常ãĢäŊãŦããĢãŽããŧãĢã§ãããããBuildKit ãį´æĨæäŊãããã¨ã¯ãģã¨ããŠãããžããã ãģã¨ããŠãŽå ´åãBuildKit ãŽä¸ãĢæ§į¯ãããããŧãĢãæäŊãããã¨ãĢãĒããžãã ããããBuildKitã¯ãããŖããˇãŗã°ãåæŖã¯ãŧãĢãŧãæ°ãããããŗãã¨ãŗããĒãŠãŽæ°æŠčŊãĢ寞ããå¤ããŽãĩããŧããæäžããžãã įš°ãčŋããĢãĒããžãããåžæĨãŽããĢããŧãåēæŦįãĢããĢãããĻé įĒãĢåŽčĄããĻãããŽãĢ寞ããBuildKit ã¯ã°ãŠããŽãããĢčããĻãã ãããã°ãŠãã§ã¯ãããšãĻãŽãšããããã°ãŠãå ãŽããŧãã¨ããĻæĻčĒŦãããĻããžãã
BuildKitãåŽčĄãããĢã¯ããŠããã§åŽčĄããåŋ čĻããããžãã BuildKit ããšãŋãŗããĸããŗã§åŽčĄãããã¨ãã§ããžããããģã¨ããŠãŽå ´åããããčĄããã¨ã¯ãããžããã Docker DesktopãĢã¯BuildKitããŧãĸãŗãåĢãžããĻããžãããDocker DesktopãĢãžã æŽãŖãĻãããŦãŦãˇãŧãˇãšãã ãŽä¸é¨ãåŧãåēãããĻãããããįžå¨ããã¤ããŽåļéããããžãã ããŽããããã¨ãã°ãDocker Desktop ãĢįĩãŋčžŧãžããĻããåžæĨãŽã¤ãĄãŧ㸠ãšããĸã§ã¯ãããĢããĸãŧããã¯ããŖ ã¤ãĄãŧã¸ããĩããŧãã§ããžããã ããããŖãĻã1ã¤ãŽãĸãŧããã¯ããŖãæ§į¯ããĻäŋåãããã¨ããã§ããžãããã褿°ãŽãĸãŧããã¯ããŖãåĻįãããã¨ã¯ã§ããžããã ããŽãããįĩãŋčžŧãŋ㎠BuildKit ããŧãĸãŗãåãåļéãĢį¸ãããžãã ããŽãŦãŦãˇãŧã¤ãĄãŧã¸ãšããĸãcontainerdãĢį§ģåããåĒåãããããããĢããŖãĻããããŽåéĄãŽå¤ããč§Ŗæąēãããžãã ãžããįģåãĢæ§æč¨ŧæãæˇģäģãããã¨ãã§ããžãã ãã¨ãã°ãSBOMãããĢããŽåēæãĒãŠã§ãã ããããããŽäŊæĨã¯ãžã é˛čĄä¸ã§ãã
Docker buildx ã¯ãé常æäŊããããŧãĢã§ãããããã BuildKit ãŽä¸ãĢæ§į¯ãããžãã ãžãããã㯠BuildKit ãŽå¤ããŽæŠčŊãå Ŧéãã CLI ãŗããŗãã§ãã ãã¨ãã°ãBuildKit BuildersãããĢããĸãŧããã¯ããŖããĢããäŊæã§ããžãã ãžããéĢåēĻãĒããŖããˇãĨįŽĄįãSBOMãŽæĨæ´äŊæãåĻįã§ããžãã Docker Desktop 4.19ã Docker Build ã¯ãåŽéãĢ㯠Docker buildx Build ãĢã¨ã¤ãĒãĸãšãäģããããĻããžãã ã¤ãžããåŽéãĢã¯įĨããįĨãããŽããĄãĢBuildKitãäŊŋį¨ããĻãããããããžããããããã§ãDockerããŠã¤ããŧãäŊŋį¨ããĻãããŽã¯ããããĢã¤ããĻã¯æ°ååžãģãŠã芹ãããžãã ãããĻãããŽDockerããŠã¤ããŧã¯ãåēæŦįãĢã¨ã¯ãšããŧããã¤ãĄãŧã¸ãååžãããŦãŦãˇãŧã¤ãĄãŧã¸ãšããĸã§åäŊãããããĢäŊæããĻããžããã ãããĻãããã§ã¯ããŠã¤ããŧãĢã¤ããĻããå°ãčŠŗããčĒŦæããžãã ããĻãbuildxãæäžããäģãŽããŽãŽ1ã¤ã¯ããĒãĸãŧãããĢããŧãäŊŋį¨ããæŠčŊã§ãã ããŽãããããŧãĢãĢ㎠BuildKit ãããŧãĢãĢ ããˇãŗä¸ãŽããŽãäŊŋį¨ããåŋ čĻãããããžããã ããŽãããĢãDockerãŗãŗãããšãã¨åŧã°ããããŽãæ´ģį¨ããžãã Docker ãŽãŗãŗãããšãã¨ãŗãŗãããšãã¯ãããĢãã ããŽį¯å˛ãčļ ããĻããžãã ãããããŗãŗãããšããĢãããåēæŦįãĢããŧãĢãĢ CLI ã¯äģãŽã¨ãŗã¸ãŗãĢ寞ããĻåäŊã§ããžãã įĩåąãŽã¨ãããDocker CLI ã¯ãDocker ã¨ãŗã¸ãŗãĢããŖãĻå Ŧéãããã¨ãŗã¸ãŗã¨å¯žčŠąããĻãã REST ã¯ãŠã¤ãĸãŗããĢãããžããã ãããĻãããŽã¨ãŗã¸ãŗã¯ããŧãĢãĢã§ããĒãĸãŧãã§ãããžããžããã ããŽããããããŠãĢããŽãŗãŗãããšãã¯ãããŧãĢãĢããˇãŗãĢããã¨ãŗã¸ãŗãäŊŋį¨ããã ãã§ãã ãã ããäģãŽããˇãŗãæããŗãŗãããšããäŊæãããã¨ã¯ã§ããžãã
ãã¨ãã°ãDocker context create ã¯æ°ãããŗãŗãããšããäŊæãããŗãŗãããšãããĒãšããĸãĻãããããæ°ãããŗãŗãããšããäŊŋį¨ãããã§ããžãã ãããĻãããã§ãŽ2ã¤ãŽäžã¯ãæåãŽããŽã¯ãŗãŗãããšããäŊæããSSHãŽäžã¨åäģããžããããã¯Dockerãŗãŗãããšãã§ããããĒãĸãŧãããˇãŗãĢæĨįļããæšæŗã¯æŦĄãŽã¨ããã§ãã ããŽå ´åãSSH ãäŊŋį¨ããžãã 2 įĒįŽãŽäžã¯ TLS ãŽäžã§ãTLS ã¨ãŗããã¤ãŗããäģããĻã¨ãŗã¸ãŗ API ãå ŦéããĻãã Docker ã¨ãŗã¸ãŗã¨å¯žčŠąããžãã ããŽå ´åãč¨ŧææ¸ããŧãšãŽčĒč¨ŧãčĄãŖãĻãããããCAč¨ŧææ¸ãį§å¯éĩãĒãŠãŽčŠŗį´°ã¯æŦĄãŽã¨ããã§ãã ããã§ãããããŠãĢããŽãŗãŗãããšãã¯ããŧãĢãĢãŽDockerã¨ãŗã¸ãŗãæããĻããããã¨ãã°SSHãŗãŗãããšããäŊŋį¨ããĻãŗããŗããäŊŋį¨ãå§ããã¨ãããŧãĢãĢã¨ãŗã¸ãŗãã¯ã¨ãĒããäģŖãããĢããĒãĸãŧãããˇãŗä¸ãŽã¨ãŗã¸ãŗãã¯ã¨ãĒããžãã ãã ããããŽåãĢãåŽéãĢã¯ããŽããˇãŗãĢSSHæĨįļããã¨ãŗã¸ãŗãĢã¯ã¨ãĒãåŽčĄããĻããįĩæãéãčŋããžãããããŧãĢãĢCLIãĢã¯åŧãįļã襨į¤ēãããžãã ããŽãããåŽéãĢã¯ãĒãĸãŧãã§ããˇãŗãĢSSHæĨįļããĻãããĢãããããããããŧãĢãĢã§ãããããĢæããããžãã TLS ãŽäžã¯ãæ§æãããĻããč¨ŧææ¸ãäŊŋį¨ããĻãããŽãĒãĸãŧã ããˇãŗãĢį´æĨå ŦéãããĻãã API ã¨éäŋĄããã ãã§ãã ããĻãããã§ãŽčæ¯ã¯å°ãã§ãã
buildx ãŽäŊŋ፠(6:54)
ããĻãbuildXã¯ããããĢäģéããããã¤ããŽããæˇąãäžã¨æŠčŊã§ãããbuildxãäŊŋį¨ããã¨ãããžããžãĒBuildKitããŧãĸãŗãäŊæã§ããžãã å ãģãŠčŋ°ãšããããĢãDocker DesktopãĢããŗããĢãããĻããããŽã¯ãįžå¨ãDocker DesktopãåžæĨãŽã¤ãĄãŧã¸ãšããĸãĒãŠãĢ寞ããĻæãŖãĻããåļéãĢį¸ãããĻããžãã ããããåĨãŽããĢããŧãäŊæããåēæŦįãĢã¯ãŗãŗããå ã§åŽčĄããĻããã ããŽįļæ ã§é įŊŽãããã¨ãã§ããžãã ãããĻãããŽããĢããŧã¯ãBuildKitããŧãĸãŗãŽããšãĻãŽæŠčŊãģãããæã¤ãã¨ãã§ããžãã ããŽãããããĢããĸãŧããã¯ããŖããĢããSBOMãĒãŠãåŽčĄã§ããžãã ããããŖãĻããã¨ãã°ãDocker buildx createãåŽčĄããããŠããããŠãŧã ãæåŽã§ããžãã ããŽå ´åã2ã¤ãŽããŠããããŠãŧã ã§ãã ãããĢãããããĢããĸãŧããã¯ããŖãŽããĢããŧãäŊæãããįæãããååãäŊŋį¨ãããžãã ãžããããŽããĢããŧã¯ã褿°ãŽãĸãŧããã¯ããŖãŽããĢããåŽčĄã§ãããããĢãĒããžãã įžå¨ãéãã¤ããŖããĸãŧããã¯ããŖã§ã¯ãQEMUã¨ããĨãŦãŧãˇã§ãŗãäŊŋį¨ããã ãã§ãã ããããŖãĻããã¤ããŖããŽéåēĻã§åŽčĄããããã¨ã¯æąēããĻãããžããã ããããäģãŽãĸãŧããã¯ããŖãäŊŋį¨ããĻããĢããčĄããã¨ã¯ã§ããžãã ããĢããŧããĒãšããĸãããããã¨ãã§ããããŽããĢããŧãäŊŋį¨ãããã¨č¨ããã¨ãã§ãããããå°æĨãŽããĢããŽãããŠãĢãããĢããŧã¨ããĻč¨åŽããžãã
ããĻãåãĢčŋ°ãšããããĢãį§ãäŊŋį¨ã§ããäģãŽããŠã¤ããŧããããžãã ãããĻãããããŽããŠã¤ããŧã¯ãããã¯ã¨ãŗãã§ãŽBuildKitãŽåäŊãå°ãå¤ããžãã ããŽãããåčŋ°ãããããĢãDocker ããŠã¤ããŧ㯠BuildKit ãŠã¤ããŠãĒãã¤ãžã Docker ããŧãĸãŗãĢããŗããĢãããĻãã BuildKit ããŧãĸãŗãã¤ãžã Docker ããšã¯ããããĢããŗããĢãããĻããããŧãĸãŗãäŊŋį¨ããžãã ãžããã¤ãĄãŧã¸ãã¨ã¯ãšããŧãããĻãDocker ããšã¯ããããĢããŗããĢãããĻããã¤ãĄãŧ㸠ãšããĸãĢäŋåããžãã Docker ãŗãŗãã ããŠã¤ããŧã¯ããŗãŗããå ã§ BuildKit ãåŽčĄããããŠã¤ããŧã§ãã Kubernetesã§ã¯ãBuildKitãããã¨Kubernetesã¯ãŠãšãŋãŧãäŊæããžãã ã§ããããããĢããčĄãããŗãĢãåēæŦįãĢäŊããčĩˇåããKubernetesã¯ãŠãšãŋã§æ°ããããããčĩˇåããžãã ãžãããĒãĸãŧããäŊŋį¨ããã¨ããĒãĸãŧãããĢããŧãĢãæĨįļã§ããžãã ãžãããšãŠã¤ããŽä¸é¨ãĢįšåž´éãããĒãã¯ãšãŽį¨ŽéĄã¨ããããããĢäģéããããžããžãĒæŠčŊãįĸēčĒã§ããžãã ãžããDocker ããŠã¤ããŧãŽæŠčŊã¯å°ãĒãã§ãããã¤ãĄãŧã¸ãčĒåįãĢã¤ãĄãŧ㸠ãšããĸãĢčĒãŋčžŧãŋį´ããæ§æč¨ŧæãŽãĒã 1 ã¤ãŽãĸãŧããã¯ããŖãĒãŠã§ãããã¨ãããããžãã ããã§ãããããŽäģãŽįģåãããŧãã§ããžãã ããĢããčĄãã¨ããĢæåŽããã ãã§ãã
ããĻããããããžãã¨ã¯ãšããŧããããããĢãį§ãã§ãããã¨ãããã¤ããããžãã ãããĻãããã¯åŽéãĢã¯ä¸į¨ŽãŽåĒããæŠčŊãŽä¸é¨ã§ãã é常ãDockerããĢããčĄãã¨ãã¯ãã¤ãĄãŧã¸ãããĢãããĻã¤ãĄãŧã¸ãšããĸãĢäŋåããžãã ãããããããĢãããããĢãã§äģãŽãã¨ãã§ããäģãŽæŠäŧãããã¤ãéãããžãã ããļããããĢããčĄãããã¨æãŖãĻããĻãåŽéãĢã¤ãĄãŧã¸ãtarballã¨ããĻäŋåãããå ´åã¯ãŠãã§ãããããããŽããĢããååžããUSBããŠã¤ããĢå ĨããĻã¨ãĸãŽãŖãããããã¯ãŧã¯ãĢį§ģåãããããĢã¤ãĄãŧã¸ãããŧãããããã§ãã OCIã¨ã¯ãšããŧãŋãŧãäŊŋį¨ããĻãOCIã¤ãĄãŧã¸ãŦã¤ãĸãĻãåŊĸåŧã§ããŧãĢãĢããĄã¤ãĢãˇãšãã ãĢã¨ã¯ãšããŧãã§ããžãã ãããĻãããã¯åŽéãĢãããæĄå¤§ããžãã ããļããį§ãtarballããããããŽã§ããããåãããããããããĢã ããããããã§ãå¤ããŽį°ãĒãäžããããžãã åŽéãããã§ã¯į̝æĢãĢåãæŋããĻãããã§ã¯ããŽä¸é¨ãããĸãŗãšããŦãŧãˇã§ãŗããžãã
ããããŖãĻãDockerããĢããåŽčĄããĻåēåãčĄãå ´åãtype=ociããããĻãããããã§tarãĢã¨ã¯ãšããŧãããã ãã§ãã ãããĢãããããĢããããĒãŦãŧãããããã§åŽéãĢã¯ãŠãĻãããĢããŧãäŊŋį¨ããĻãããã¨ãããããžãã ããã¯Docker Build CloudãããŽããŽã§ãããã§ãããĢčĒŦæããžãã ãããĻãããŽããĢããããã§åŽčĄããåžãé常ãĢåį´ãĒReactãĸããĒãąãŧãˇã§ãŗãæ§į¯ããĻããã ãã§ãã ããĢããåŽäēããã¨ãtarball ãéããããã¨ãããããžãã ãããĻãåŽéãĢã¯įģåã¨ããĻäŋåããĻããžããããããã§oci-export.tarãčĻããã¨ãã§ããžãã ãããĻãæ°ããããŖãŦã¯ããĒãäŊæããžãããã ãããĻãããŽãŋãŧãĢããããĢãŗããŧããĻããããæĄåŧĩããžãããã JQãäŊŋãŖãĻãŋããã ãããĢäģéãããããã§ãšãã¨ãããšãĻãŽåã ãŽãŦã¤ã¤ãŧãŽããšãĻãŽããããĒãŠã襨į¤ēãããžãã ããããŖãĻãįš°ãčŋããĢãĒããžãããOCIåŊĸåŧãŽtarballã¨ããĻã¨ã¯ãšããŧããããžãã ããĻãããã§ãį§ãĢã§ãããã¨ã¯äģãĢããããžãã ããããŖãĻãããŽDockerfile(ãããŠãĢããŽããŽ)ã¯ãããŽReactãĸããĒãąãŧãˇã§ãŗãããĢãããĻnginxãŗãŗãããĢå Ĩããžãã ããããäŊãããŽįįąã§ãnginxãŗãŗãããĢå ĨããäģŖãããĢãnginxãŗãŗãããĢãŗããŧããĻããããŽããĢããŽįĩæãã¨ã¯ãšããŧããããã ããããããžããã ããããããĄã¤ãĢãˇãšãã ãĢčŧãããã ããŽå ´åã¯ãŠãã§ãããã? ãããã¤ãããģãšãéããããããĒãããDockerãäŊŋãŖãĻããĢããããããŠãåŽéãĢã¯éįãĒHTMLãĸãģãããĒãŽã§ãS3 ããąãããĢå ĨããĻCloudFrontCDNã§é å¸ããã¤ããã ããã§ãããžããããã¯ã§ããžãã ããã§ã¯ãäģãŽDockerfileãæåŽããžãããã åēåtype=localãäŊŋį¨ããžãã ã¨ã¯ãšããŧãã¨ããããŧãĢãĢããŠãĢãã¨ããĻåŽå ãč¨åŽããžãã ãããĻäģããããåŽčĄãããã¨ããŗãŗãããšããŽåãĸããããŧããĢã¯OCIåēåãåĢãžãããããããšãĻããĸããããŧããããŽãĢå°ãæéãããããžããã ããããããŽå ´åãã¯ãŠã¤ãĸãŗãããŖãŦã¯ããĒãĢã¨ã¯ãšããŧããããĻãããã¨ãããããžãã į´ 151 ãããã¤ãããŗããŧããžããã ãããĻäģãã¨ã¯ãšããŧãããŖãŦã¯ããĒãčĻãã¨ããããĢããĢããããåēåã襨į¤ēãããžãã ãããĻãããã¯į§ãŽReactãĸããĒãããŽį§ãŽindex.htmlã ãã§ãĒããäģãŽJavaScriptã¨CSSãŽãĸãģãããåžãĻããžãã ããããŖãĻãįš°ãčŋããĢãĒããžãããããããŽã¨ã¯ãšããŧãŋãŧãäŊŋį¨ããã¨ãããĢããŽåēåã夿´ã§ããžãã ãããĻãžããããŽDockerfileããŠãŽãããĢčĻããããį¤ēããããĢãããŽå ´åãį§ã¯ãŧãããå§ããžããã ãããĻãåãŽæŽĩéããäŋæããããŖãããĄã¤ãĢãååžããĻããžãã ãããĻãããã§ã¯ããããããĄã¤ãĢãˇãšãã ãŽãĢãŧããĢįŊŽããĻããžãã ã¤ãžãããĢãŧããĢããããšãĻãŽããĄã¤ãĢããããŽããŧãĢãĢããŖãŦã¯ããĒãĢã¨ã¯ãšããŧããããã¨ããåãããĄã¤ãĢãˇãšãã æ§é ãĢåžããžãã įš°ãčŋããĢãĒããžãããããžããžãĒããŧãēãĢåŋããĻæ´ģį¨ã§ããããžããžãĒčŧ¸åēæĨč ãããĒããããžãã
ããĢããĸãŧããã¯ããŖããĢã (13:22)
ã§ã¯ãããĢããĸãŧããã¯ããŖ ããĢããĢã¤ããĻå°ãã芹ãããžãããã ã§ã¯ãããĢããĸãŧããã¯ããŖããĢãã¯ãĒãéčĻãĒãŽã§ãããã? ãĒãåŋ čĻãĒãŽã§ãã? į§ããĄã¯ããããããŠãŽãããĒ䞥å¤ãåžãĻãããŽã§ãããã? ãããĻãããã§ãŽįãã¯ãæãããĢããĒããŽįĩįšãĢ大ããäžåããžãã ããããæåãĢãã¤ããĒãã¤ãžã 0 㨠1 ãĢã¤ããĻčããã¨ããããã¯įšåŽãŽ CPU ãĸãŧããã¯ããŖãĢã¨ãŗãŗãŧããããžãã ãžããããšãĻãŽCPUãĸãŧããã¯ããŖãĢã¯į°ãĒãåŊäģ¤ãģããããããžãã ãã¨ãã°ãARMã¯AMDãĒãŠã¨ã¯åŊäģ¤ãģããã大ããį°ãĒããžãã ãžãããĒããŦãŧããŖãŗã°ãˇãšãã ãį°ãĒããžãã ããããŖãĻãWindowsã¨Linuxã§ã¯ããã¤ããĒã¯å¤§ããį°ãĒããžãã ã§ããããæåéã1ã¤ãŽįģåãæŽãŖãĻã1åäŊãã°ãŠãã§ãéãšãããã§ã¯ãããžããã ããŽãĸããĒãąãŧãˇã§ãŗãåŽčĄããããžããžãĒ CPU ãĸãŧããã¯ããŖã¨ãĒããŦãŧããŖãŗã° ãˇãšãã ãã¨ãĢãããŽã¤ãĄãŧã¸ãäŊæããåŋ čĻããããžãã įžå¨ãå¤ããŽéįēč ã¯ãįšãĢAppleãŽãŠãããããã§ãARMããŧãšãŽããˇãŗãäŊŋį¨ãããããžããžããˇããããĻãããããããŽå¤ãã¯ARMããŧãšãŽAppleãˇãĒãŗãŗããˇãŗãäŊŋį¨ããĻããžãã ããããããå¤ããŽWindowsããˇãŗãããĒãŧããĢåå Ĩãå§ããĻãããŽãčĻãããžãã ãããĻãããããŽå¤ãã¯ARMããŧãšã§ããããžãã ããŽãããéįēč ãŽã¯ãŧã¯ãšããŧãˇã§ãŗãĢã¯ããžããžãĒį°åĸãæˇˇå¨ãããąãŧãšãčĻãããžãã ãĸããĒãąãŧãˇã§ãŗããããã¤ãããã¨ãå¤ããŽäēēã ãã¯ãŠãĻãã§ARMããŧãšãŽããˇãŗãäŊŋį¨ãå§ããžããããã¯ãã¨ããĢãŽãŧåšįãéĢããåŽčĄãŗãšããäŊãããã§ãã ã§ããããããŽåįã¯éčĻã§ãã ã§ããããARMããŧãšãŽã¤ãĄãŧã¸ãį°ĄåãĢæ§į¯ããæšæŗããããã¤ãŗããŠãšããŠã¯ããŖãŽãŗãšããį¯į´ãããã¨ãã§ãããããĢãĒãŖãã¨ãããããĒãããã§ãã ãããĻæåžãĢãããĢããĸãŧããã¯ããŖã¤ãĄãŧã¸ã¯é¸æčĸãæäžããžãã ããĄãããããã§ã¯Macã§čĩ°ãŖãĻããžãã į§ãŽããˇãŗã¯AMD 64 ã¤ãĄãŧã¸ãåŽčĄã§ããžãã ããããããĄããããã¤ããŖããŽéåēĻã§čĩ°ãããã§ã¯ãĒãããããŠãŧããŗãšãŽäŊä¸ãäŧ´ããžãã ããĻãããŽåãã¤ãĄãŧã¸ã褿°ãŽãĸãŧããã¯ããŖã§åŠį¨å¯čŊã§ããŖãå ´åãį§ãĢã¯é¸æčĸããããããã¯į§ãĢã¨ãŖãĻããéŠåãĢæŠčŊããžãã ãžããäģãŽããĻãŗãšããĒãŧã ãĻãŧãļãŧãåŧãŖåŧĩããŊãããĻã§ãĸãäŊæããĻããįĩįšã§ããã°ãįš°ãčŋããĢãĒããžãããåŊŧããĢã鏿čĸãä¸ããããžãã
įš°ãčŋããĢãĒããžãããäēēã ãããĢããĸãŧããã¯ããŖãããããįįąã¯ãããããããžãã ããĻãããŽããĢããčĄãæšæŗããããžãã ããĢãã¤ãŗãããBuildKitã¯ãQEMUãäŊŋį¨ããĻéãã¤ããŖããĸãŧããã¯ããŖãã¨ããĨãŦãŧãããžãã ããããŖãĻãããŽäžã§ã¯ãdocker buildx createãåŽčĄããĻããĢããŧãäŊæããããŠããããŠãŧã ãæåŽããžãã ãããĻãããŽããĢããåŽčĄãããã¨ããã¤ããŖããĸãŧããã¯ããŖããã¤ããŖãéåēĻã§åŽčĄãããããŽã¯ããšãĻäŊŋį¨ãããžãããéãã¤ããŖããĸãŧããã¯ããŖã¯QEMUã¨ããĨãŦãŧãˇã§ãŗãäŊŋį¨ããžãã įš°ãčŋããĢãĒããžãããããžããããŽã§ãããããĒãé ããã¨ãå¤ããŽã§ãã ãžããCIãã¤ããŠã¤ãŗã§ã¯ãã¸ã§ããåä¸ãŽãã¤ããŠã¤ãŗã§åŽčĄãããĻããå¯čŊæ§ããããããããã¯æãããĢåä¸ãŽãĸãŧããã¯ããŖãĢãã¤ãŗããããĻããããããããĢããééããžãã ããããį§ã¯č¤æ°ãŽãĸãŧããã¯ããŖį¨ãĢæ§į¯ãããã¨čããĻããžãã ãããĢã¤ããĻã¯ãããã§ãããĢã芹ãããžãã įš°ãčŋããĢãĒããžãããQEMUã¨ããĨãŦãŧãˇã§ãŗãįĩãŋčžŧãžããĻããžãã æéĢã§ã¯ãããžãããããããĢã¯ãããžãã
ããå°ãDIYãŽãĸãããŧãããããäēēãŽãããĢããã¤ããŖããŽããĢããĸãŧããã¯ããŖããĢããčĄãæšæŗããããžãã ããŽãããããŽä¸é¨ã¯ãåãĢčĒŦæããDockerãŗãŗãããšããæ´ģį¨ãããã¨ãĢãĒããžãã ããããŖãĻãããŽå ´åã¯ãARMããŧãšãŽããˇãŗãæãarm-machineã¨ãããŗãŗãããšããäŊæããžãã ãããĻãSSHãäŊŋį¨ããĻæĨįļããžãã æŦĄãĢãARM64 ããŠããããŠãŧã ãŽå ´åãããŽįšåŽãŽããĢããĢARMããˇãŗãŗãŗãããšããäŊŋį¨ããã¨ããããĢããŧãäŊæããžãã æŦĄãĢã§ãããã¨ã¯ãåēæŦįãĢããŽããĢããŧãĢåĨãŽããŧããčŋŊå ããĻãã¤ãžããåĨãŽãĸãŧããã¯ããŖããããŠãĢããäŊŋį¨ãããã¨ã§ãã ããããŖãĻãããŽå ´åãããŽįšåŽãŽããˇãŗã¯AMDãŽ64 ããˇãŗã§ããå¯čŊæ§ããããžãã ããããŖãĻãããŽããĢããĸãŧããã¯ããŖããĢããäģããčĄãã¨ãAMD64 ããĢãã¯ããŧãĢãĢããˇãŗãĢå§äģģãããžãããARMãŽããĢã64 ãĒãĸãŧãããˇãŗãĢå§äģģãããžãã ãããĻãBuildKitã¯ããĒããŽãããĢãããããšãĻéĸåčĻãžãã ããĻãįš°ãčŋããĢãĒããžããããããč¨åŽãããã¨ãã§ããžãããčĒåã§åŽčĄãããã¨ãã§ããžãããč¤éã§ãã ãããĻããĄãããäģã§ã¯ãããããšãĻãŽį°ãĒãæŠæĸ°ãããĢããŧãĒãŠãįļæããåŋ čĻããããžãã ããããį§ã¯ãããĢDocker Build CloudãŽããŠã°ãįŊŽãããã ãã§ãã Docker Build Cloudã§ã¯ãã¯ãŠãĻãã§åŽčĄãããããããŽãããŧã¸ãããĢããŧãåŠį¨ã§ããžãã ãžãããã¤ããŖããŽããĢããĸãŧããã¯ããŖãĩããŧããäģåąããĻããžãã ããŽããããģãããĸããã¯ä¸čĻã§ãããˇãŗãããžããžãĒãŗãŗãããšããŽį°ãĒãããŧããįŽĄįããåŋ čĻããããžããã ã¨ãĻãį°Ąåã§ãã
ããĢããĸãŧããã¯ããŖããĢããĢäģåąããéĢåēĻãĒDockerfileãĩããŧããĢã¤ããĻ芹ããžãããã ããĒããã§ããã¯ãŧãĢãĒãã¨ãŽ1ã¤ã¯ãããžããžãĒãšããŧã¸ãŽããããã§ãããŽãšããŧã¸ãåŽčĄããããŠããããŠãŧã ãåŽéãĢæåŽã§ãããã¨ã§ãã ãã¨ãã°ãããŽįšåŽãŽããĢãã§ã¯ãAMD64 㨠ARM64ã¨ããããĢããĸãŧããã¯ããŖ ããĢããčĄããžãããã㎠React ãĸããĒã§ã¯ãæįĩįãĒãĸãģãããHTMLãCSSãJavaScript ã¯ããŠããããŠãŧã ãĢäžåããžããã ã§ã¯ãéįãĸãģãããããå ´åãĢãARM ããˇãŗã¨ AMD64 ããˇãŗã§ HTMLãCSSãJavaScript ãåŽéãĢããĢããããã¨ã¯æŦåŊãĢįãĢããĒãŖãĻããžãã? ããããŽčŗįŖããããŠããããŠãŧã ãĢäžåããĻããžããã ããããŖãĻãããŽå ´åãį§ããĄãč¨ãããã¨ã¯ããã¤ããŖãããĢãããŠããããŠãŧã ãäŊŋį¨ããĻããŽããĢããåŽéãĢåŽčĄããã ãã ã¨ãããã¨ã§ãã ããããæįĩæŽĩéã§ã¯ãåŽéãĢã¯ããŋãŧã˛ããããŠããããŠãŧã ãčĄããžãã ã¤ãžããæįĩįãĢčĄããããŽã¯ãããĢããšããŧã¸ããã¤ããŖããĸãŧããã¯ããŖã§åŽčĄãããĻãããããĒãã¨ã§ãã įš°ãčŋããĢãĒããžãããåŽčĄãããŽã¯ä¸åēĻã ãã§ãã ãã ããæįĩãšããŧã¸ã¯æįĩãŋãŧã˛ããããŠããããŠãŧã ãã¨ãĢ1ååŽčĄãããžãã ããã¯ãããŠããããŠãŧã ãĢäžåããĒããĸãģãããĢã¨ãŖãĻé常ãĢåŧˇåã§ãã ããããŖãĻãããŽå ´åãæįĩįãĒjarããĄã¤ãĢãžãã¯ããĄã¤ãĢãããŠããããŠãŧã ãĢäžåããĒãReactãĸããĒãžãã¯JavaãĸããĒãąãŧãˇã§ãŗã§ãã ãžãããã¤ããŖãããĢãããŠããããŠãŧã ãäŊŋį¨ããĻããĢããčĄããã¨ãã§ããžãã ãããĻãæįĩįãĒãŋãŧã˛ããããŠããããŠãŧã ã¯ãARMį¨ãŽJDKãAMD64 į¨ãŽJREããããŗARM64ãĢåēãĨããã¨ãã§ããžãã ãããĻãããã¯ããžããããžãã įš°ãčŋããĢãĒããžãããããããŽããŠããããŠãŧã ããŠã°ã§ãã§ããé常ãĢã¯ãŧãĢãĒãã¨ãããã¤ããããžãã
ããŖããˇãĨįŽĄį (19:37)
ããĻãããŖããˇãĨįŽĄįãĢã¤ããĻ芹ããžãããã ãããĻãããããããĒãã¯ãã§ãĢããĢãããŖããˇãĨãĢæ°ãĨããĻããã¨įĸēäŋĄããĻããžãã ããããããŖããˇãĨãĢã¤ããĻčããã¨ãäģãĢãããã¤ããŽãã¨ãæĩŽããŗä¸ããŖãĻããžãã ããã§ãããŖããˇãĨįŽĄįãŽįįąãĢã¤ããĻå°ãã芹ããããã¨æããžãã ãžããããĢããŧã¯ããĢãããŖããˇãĨãäŊŋį¨ããĻããĢããéĢéåããžãã ãžããããĢãããŖããˇãĨãæ´ģį¨ã§ããã°ãããåšæįã§ãã ãŦã¤ã¤ãŧãååŠį¨ã§ãããããĢDockerfileããĒãŧãąãšããŦãŧãˇã§ãŗãããŗããĢãã§ããã°ãããĢããéããĒããžãã æŧãããåŧãããããåŋ čĻããĒããĒãŠãå°ãĒãã§ãã ããããåéĄã¯ãããããŽããŖããˇãĨããé常ããããŠãĢãã§ã¯ããĢããŧãĢ寞ããĻããŧãĢãĢã§ãããã¨ã§ãã ããããŖãĻãããã§ããŧãĢãĢ ããˇãŗã§ããĢãããã¨ãããŧã ãŽäģãŽčǰããį§ãå Ĩåããã°ãããŽããŖããˇãĨãæ´ģį¨ã§ããžããã ãžãã¯ãįšãĢį§ãŽCIãã¤ããŠã¤ãŗã§ã¯ãããĢãã¯ä¸æįãĒį°åĸã§åŽčĄããããã¨ãå¤ããCIãã¤ããŠã¤ãŗãčĩˇåããããŗãĢãäģĨåãŽåŽčĄãããŽįĨčãããŖããˇãĨããĒãįæ°ããããˇãŗãŽã¸ã§ãã§éå§ãããžãã
ã§ã¯ãããããŽããŖããˇãĨããŠãŽãããĢæ´ģį¨ã§ãããŽã§ããããã ããĻããããčĒåã§čĄããĢã¯ããã¤ããŽæšæŗããããžãã ãžããBuildKit 㨠buildx ãĢã¯ããžããžãĒããŖããˇãĨããã¯ã¨ãŗãããããžãã ãã¨ãã°ãåŽéãĢããŖããˇãĨãįģåčĒäŊãĢåãčžŧããããĢãããã¨č¨ããã¨ãã§ããžãã ãå§ãããžããããįĸēããĢã§ããžãã ããŖããˇãĨããŦã¸ãšããĒãĢãããˇãĨããã¨ãã¤ãĄãŧã¸ããããˇãĨããã ãã§ãĒããããŖããˇãĨããããˇãĨããå ´æã¨ããĻãããĒãé ģįšãĢäŊŋį¨ãããžãã ãžããããŖããˇãĨãŽæ¤į´ĸãããšãĻãå°æĨãįēįãããããĢãčŋŊå ãŽãããã§ãšããåĢãžããĻããžãã ããĢãéãĒãŠã§äŊŋį¨ãããĻãããããã¯ãŧã¯æĨįļãšããŦãŧã¸ãããå ´åã¯ãããŖããˇãĨãããŧãĢãĢããŖãŦã¯ããĒãĢæ¸ãčžŧããã¨ãã§ããžãã GitHub ãĸã¯ãˇã§ãŗįĩąåããããããŖããˇãĨ㯠GitHub ãĸã¯ãˇã§ãŗ ããŖããˇãĨãĢãããˇãĨãããžã (S3ãĒãŠ)ã ããĻãããã§č¨åããã2ã¤ãŽį°ãĒããĸãŧãããããžãã æåãŽåã¯ãã¨ã¯ãšããŧãããããŦã¤ã¤ãŧãŽãŋãããŖããˇãĨããããã¤ãžãæįĩãšããŧã¸ãŽãŋãããŖããˇãĨãããã¨ãããã¨ã§ãã ããĢããšããŧ㸠ããĢããčĄãŖãĻããå ´åãããã¯åãŽããšãĻãŽãšããŧã¸ãããŖããããããã§ã¯ãããžããã ãããĻãããã¯ããĒããæãããŽãããããĒãããããã§ãĒããããããžãããããã¯ããĒããŽããŧãēãĢäžåããžãã ãããĻããããããĒããæãããŽã§ã¯ãĒãå ´åãããããæå¤§ã§ããããããããšãĻãŽä¸éãšããããããŖããããžãã įš°ãčŋããĢãĒããžãããããĒããŽããŧãēãĢãããžãã ãããĢã¯ããžããžãĒããŖããˇãĨãĸãŧãããããžãã
ããã§ãããã§į¤ēã 2 ã¤ãŽäžãį´šäģããžãã ããŽããŖããˇãĨãŽäžã§ã¯ããããčĄããã¨ã¯é常ãŽããĢããčĄããã¨ã§ãããããŖããˇãĨ 2 㨠from ã¯ãŦã¸ãšããĒãäŊŋį¨ãããŦã¸ãšããĒãŽå ´æã¯ããŽå ´å㯠my-repo/my-cache ãĢãĒããã¨ãį¤ēããĻããžãã ããĻãæãããĢããã§ã¯ãã ãŽäŊã芹ã§ãã ãã ããããŽå ´å㯠Docker Hub ããããĢãããžãã įŦčĒãŽå é¨ãŦã¸ãšããĒããååžããå ´åã¯ãé常ãŽã¤ãĄãŧã¸åã¨åãååäģãããŋãŧãŗãĢåžããžãã ã ãããregistry.company.com/my-repo/my-cacheã äŊã¨ã ããŽå ´åãmode=max ã§ãã ããããŖãĻãįš°ãčŋããĢãĒããžãããããšãĻãŽä¸éãšãããããããˇãĨãããžãã ããããããŖããˇãĨãäŊŋį¨ããžãã ãããĻãåŽäēããããããŖããˇãĨããããĢãããˇãĨããžãã ããã§ãŽåĨãŽäžã¯ãS3 ããąãããŽäŊŋį¨ã§ãã ããŽäžã§ã¯ãããŖããˇãĨã¯ãŦã¸ãšããĒãĢæ ŧį´ããããŽã§ã¯ãĒããããŽãĒãŧã¸ã§ãŗãŽ S3 ããąãããããŽããąããåãããąããå ãŽããŽããŧããŦããŖãã¯ãšãĢãæ ŧį´ãããžãã įš°ãčŋããĢãĒããžããããããæ§æãããĢã¯ããžããžãĒæšæŗããããžãã
GitHub Actionsã§ããããŠãŽãããĢčĻããã â DockerããĢããããˇãĨãĸã¯ãˇã§ãŗãäŊŋį¨ããĻããå ´åãããŖããˇãĨãŽfromã¨cache toãæåŽãããããŽčŋŊå ãŽããŖãŧãĢããĢãããžããã ãããĻãããã¯ãã åˇŽãčžŧãã ãã§ãã ã§ããããįš°ãčŋããĢãĒããžãããããŖãŗãšããããžãã ã¤ãžãããããããšãĻãčĒåã§įŽĄįãããã¨ã¯įĸēããĢã§ããžãã ãããĻãããšãĻãŽãŦããŧã¸ãŗãŦã¯ãˇã§ãŗãã¯ãĒãŧãŗãĸãããĒãŠãįŽĄįããåŋ čĻããããžãã ããããįš°ãčŋããĢãĒããžããããããĢã¯åŊį¤žãŽčŖŊåãŽ1ã¤ã§ããDocker Build Cloudį¨ãŽåĨãŽããŠã°ããããĢįŊŽããžãã įžå¨ãããšãĻãŽããĢãéã§å ąæããŖããˇãĨãããããŦããŧã¸ãŗãŦã¯ãˇã§ãŗãčĒåįãĢåĻįãããããšãĻãŽããŖãšã¯ãšããŧãšã¨ããŖããˇãĨãĢããšãĻãč˛ģããããĒããããĢããžãã
ãããĻãžããããã§ããĢããåŽčĄããã¨ãããã§ããã¯ãŧã¯ãããŧãååžãããããĢã¸ãŖãŗãããžããã-ããŽįšåŽãŽããĢãã¯ããŖããˇãĨãäŊŋį¨ããĻããžããã ãããĻãæ¯åįģåãŦã¤ã¤ãŧãåŧãŖåŧĩãåŋ čĻããããã¨ãããããžããããŖããˇãĨã¯äŊŋį¨ãããĻããžããã ããŽãããæ¯åããšãĻãŽäžåéĸäŋãããšãĻããããˇãĨãããããĢãããããĒããã°ãĒããĒããã¨ãå¤ããDocker Build CloudãäŊŋį¨ããã¨ãããšãĻãŽã¤ãĄãŧã¸ããã§ãĢããĢããããŦã¤ã¤ãŧãããžããžãĒã¯ãŧã¯ãããŧãĢããŖããˇãĨãããĻãããã¨ãããããžãã įš°ãčŋããĢãĒããžãããããã§åŋ čĻãĒ夿´ã¯é常ãĢį°Ąåã§ãé常ãĢæå°éãĢæããããžãã
ãã¤ã¯ã§ããĢã (24:19)
ããĻããã¤ã¯ãĢã¤ããĻå°ã芹ããžãããã įžå¨ããã¤ã¯ã¯į§ããĄãåãįĩãã§ããæ°ããããŧãĢã§ãããããĒãæ´įˇ´ãããããĢããŽããŧãēãæēãããŽãĢåŊšįĢãĄãžãã ããã§ã¯ãããŽč¤éãĒCLIããĢãããå§ããžãããã ããĻãčǰããããŽãããĒããŽãæãŖãĻããããã§ã¯ãĒãã¨æããžããããããĢã¯cache-fromãcache-toããããããĢããĸãŧããã¯ããŖããĢããåŽčĄããããžããžãĒãŠããĢãæåŽããĻããžããããŽå ´åãåŽéãĢã¯č¤æ°ãŽãŋã°ãæãĄãããĄã¤ãĢãæåŽããĻããããããããŠãĢããŽDockerããĄã¤ãĢãäŊŋį¨ããĻããžããã įš°ãčŋããĢãĒããžãããããšãĻãŽäēēãŽããĢããããŽãããĢčĻããããã§ã¯ãããžãããããŠããĢãããããčŋŊå ãããĒãŠãå¤ããŽãã¨ãčĻãããžããįš°ãčŋããĢãĒããžããããŠãããã°ãããį°ĄåãĢã§ãããŽã§ãããã? ã¤ãžããbakeãčĄããã¨ã¯ãããéĢããŦããĢãŽããŧãĢã§ãããæŊ蹥åããĒãŧãąãšããŦãŧãˇã§ãŗãããŠãŧããããŽåŽŖč¨ããããĢäŊŋããå¤ããŽį¨čĒã§ãã ããããåēæŦįãĢã¯ããĢããŗããŗããäŊįŗģåããã¤ãĄãŧã¸ãŽããžããžãĒããĒã¨ãŧãˇã§ãŗãå Ŧéãããã¨ãã§ããžãããããŽããĢãã¨ããŽããĢãã¯ãŠãããŖãĻčĄããŽããã¨ããįåãããã°ã BuildKitãDockerfileå ãŽåã ãŽãšããããä¸ĻčĄããĻåŽčĄã§ãããŽãĢ寞ããBakeã¯åŽéãĢä¸Ļåã¤ãĄãŧã¸ããĢããåŽčĄãããããããĒãŗã¯ããĻé常ãĢåĒãããã¨ãčĄããã¨ãã§ããžãã ãĒãŧãąãšããŦãŧãˇã§ãŗ ããĄã¤ãĢãäŊŋį¨ããå¤ããŽå ´åãHCL ãäŊŋį¨ããĻ襨į¤ēãããžãã ããŽãããTerraformãŽãããĢčĻããžãããæãããĢæ§é ãį°ãĒããžãããJSONãYAMLã§č¨čŋ°ãããã¨ãã§ããžãã
ããŽãããå¤ããŽįšã§ãBake 㯠Compose ãåŽčĄãããããĢããĢãããã¨čãããã¨ãã§ããžãã ããããŖãĻãããŽåãŽCLIãŗããŗããäŊŋį¨ããĻãããŽBakeããĄã¤ãĢãĢ夿ã§ããžããã äģããŋãŧã˛ãããæåŽããã¨ãåēåãããŖããˇãĨãDockerfileãããŠããããŠãŧã ããŠããĢãĒãŠããããžãã ãããĻãããããdocker buildx bakeãåŽčĄããã ãã§ããããį§ãŽãããĢäģäēãããĻãããžãã ãããĻäģãããŽč¤éãĒCLIãŗããŗããããŽHCLããĄã¤ãĢãĢäŊįŗģåãããį°ĄåãĢåįžããĻããĢãã§ãããããĢãĒããžããã ããĻãįš°ãčŋããĢãĒããžãããããã¯ããĒãåį´ãĒäžã§ãã ãããĢã¯å¤ããŽč°čĢããããžãããåŽéãĢ㯠3 ã¤ãŽį°ãĒããŗãŗããã¤ãĄãŧã¸ãããĢããããããããį°ãĒã Docker ããĄã¤ãĢãäŊŋį¨ããå ąææ§æããįļæŋããä¸ĻååŽčĄãéå§ã§ããžãã įš°ãčŋããĢãĒããžãããããĒãæ´įˇ´ããããã¨ãčĄããã¨ãã§ããžãããããã§ããšãĻãæãããã¨ããããã§ã¯ãããžãããããããĨãĄãŗãããã§ãã¯ããĻãã ããã Docker BakeãĢã¯ãé常ãĢåĒããäžããããĨãĄãŗãããããããããžãã
Docker in Docker (DinD) (27:00)
ããĻããžã¨ãã¨ããĻãDockerãŽDockerãĢã¤ããĻčĒŦæããžãã ããĻãDockerãŽDockerã¯åäģãĒããŧãã§ãã ãžããįšãĢCIãã¤ããŠã¤ãŗã§ã¯ãDocker BuildãäŊŋį¨ããĻããå ´åãDockerã¨ãŗã¸ãŗãåŋ čĻãĢãĒããããããĢãã§ããåēãĻããããŽã§ãã ãžããå¤ã㎠CI ã¸ã§ãã¯ãŗãŗããå ã§åŽčĄãããžãã äžãã°ãJenkinsãGitLabãĒãŠãCIãã¤ããŠã¤ãŗã§ã¯ãæ°ããã¸ã§ãã¯ããšãĻãããã¨ã¯ãŠãšãŋããžãã¯åŽčĄä¸ãŽåĨãŽãŗãŗããã§ããã¨ãããã¨ãå¤ããŽäēēã¨čŠąããžããã ããŽãããããŽãŗãŗãããããĢããčĄããããĢã¯ãåŽéãĢããĢããčĄããããĢæ°ãããŗãŗãããåŽčĄããčŊåãåŋ čĻã§ãã ããããŖãĻãåēæŦįãĢã¯2ã¤ãŽãĒããˇã§ãŗããããžã - 1ã¤ã¯ãããšããŊãąãããããŽã¤ãĄãŧã¸ãžãã¯CIã¸ã§ããĢããĻãŗãããããåēæŦįãĢããšãããããŗãŗãããåŽčĄã§ãããããĢãããã§ãããããDockerãŽDockerãŽįąæĨã§ãã é常ãĢå¤ããŽCIã¸ã§ãããŗãŗããå ã§åŽčĄãããããã¯åēæŦįãĢãããŽCIã¸ã§ãããĩãŗãããã¯ãšåããĻãããããŽã§ãããããĒããåãéĸããã¨ã¯ã§ããžããããããšãä¸ã§äŊãã§ããžããã ããŽãããæ°ãããŗãŗãããčĩˇåã§ããžãããDockerãĢã¯ããšãããããŗãŗãããDockerãåå¨ããå¯čŊæ§ããããžãã
ããããããŽãããĢã¯ãCIã¸ã§ããŗãŗãããĢčŋŊå ãŽæ¨Šéãåŋ čĻã§ãããããšããããååįŠēéãäŊæãããããŗãŗãããčĩˇåããããããããŽįšæ¨Šãĸãŧããĸã¯ãģãšãåŋ čĻãĢãĒãããããããĢã¯ããã¤ããŽčǞéĄãäŧ´ããžãã ãžããããŽįšæ¨Šãĸãŧãã¯ãįĩįšãŽãģããĨãĒããŖæ§æã§ãããã¯ãããĻããå ´åããããžãããžããããã§åŽčĄãããĻããããˇãŗä¸ãĢããå¯čŊæ§ãŽããLinuxãģããĨãĒããŖãĸã¸ãĨãŧãĢã¨įĢļåããå¯čŊæ§ããããžãã ãžããããšãããããŗãŗãããčĩˇåãããã¨ããã¨ãããĄã¤ãĢãŽããĻãŗãããšãæŖįĸēã§ãĒããããĒãããĒãããŧãĒįļæŗãįēįããå¯čŊæ§ãããã¨ããč¤éãĒããĄã¤ãĢãˇãšãã ãŽåéĄãĢééãå§ããžãã ã§ãããããããĢã¯2ã¤ãŽé¸æčĸããããŽã§ãã įš°ãčŋããĢãĒããžããããããčĒåã§čĄãŖãĻããå ´åãæåãĢDockerãŊãąããããŗãŗãããĢããĻãŗãããã¨ããããĢã¯é常ãĢ大ããĒčĻåãäŧ´ããžãã ããĻãããã¯ãģããĨãĒããŖãŽãŖããã¨čĻãĒããã¨ãã§ããžãã ããããŖãĻããã¨ãã°ããããčĄãå ´åãããšããŊãąãããããŽãŗãŗãããĢå ąæããžãã ããããŖãĻãããŽãŗãŗããå ãŽãŗããŗãã¯åŽéãĢã¯ããšããŽã¨ãŗã¸ãŗä¸ã§åäŊããĻãããããããŽã¸ã§ãã¯ãDockerãåŽčĄããããšãããĄã¤ãĢãˇãšãã å ¨äŊãæ°ãããŗãŗãããĢããĻãŗãããããšãä¸ãŽäģģæãŽããŽãĢãĸã¯ãģãšã§ãããããĢããããã¨č¨ããã¨ãã§ããžãã įš°ãčŋããĢãĒããžããããããĢã¯ååæŗ¨æãããã¨ããã§ãããããã¯é¸æčĸãŽä¸ã¤ã§ãã įš°ãčŋããĢãĒããžããããģããĨãĒããŖãŽãŖããã¨ãģããĨãĒããŖäŊåļãĢčĒåčĒčēĢãįŊŽãããĻãããã¨ãčĒčããĻãã ããã åĨãŽãĒããˇã§ãŗã¯sysboxãäŊŋį¨ãããã¨ã§ãããããšãããããŗãŗãããåŽå ¨ãĢåŽčĄã§ããããŽäžãããã¤ããããžãã ãããĢã¯ããã¤ããŽããŦãŧããĒãããããžãããsysbox ãäŊŋį¨ããĻããšãããããŗãŗãããåŽčĄã§ãããããĢč¨åŽããæšæŗããããžãããããšãããããŗãŗãããã§ãããã¨ã¨ã§ããĒããã¨ãå°ãåļåžĄãããããã¨ãã°ããĢãŧã ããĄã¤ãĢ ãˇãšãã ãããĻãŗãã§ããĒããĒãŠããžãã ããŽããããģãããĸããã¯č¤éã§ããããĒããˇã§ãŗã§ããããžãã ãããĻæåžãĢãDocker Build CloudãĢį§ģčĄããã¨ãDockerãĢDockerã¯åŋ čĻãĒããããĒããŽäģäēã¯åŽéãĢã¯ãĒãĸãŧãããĢããŽã¯ãŠã¤ãĸãŗãã ãã§ãã ãžããARM ããˇãŗã¨ AMD64 ããˇãŗãŽä¸ĄæšãŽãã¤ããŖã ãĩããŧããåŠį¨ã§ããžãã ããããããã§ãããã¤ããŠã¤ãŗã§čĩˇåããĻããKubernetesãããããããããŽãããã¯Docker Build Cloudã¨éäŋĄããčŊåãŽãŋãåŋ čĻã§ããã¨æŗåããĻãããŽä¸éįšãé常ãĢéŖããæã¤åŋ čĻããããžãã ããšãããããŗãŗãããčĩˇåããããåŽéãĢäŊãããããããæŠčŊã¯åŋ čĻãããžããã ãžãããã§ãĢæ ŖãčĻĒããã§ãããŽã¨åãããŧãĢãããšãĻäŊŋį¨ãããã¨ãã§ããDocker Buildã ãã§éæŗãčĩˇãããžãã ãžããå ąæããŖããˇãĨããäģĨåãĢčĒŦæããäģãŽããšãĻãŽãã¨ãæ´ģį¨ããäēåŽã§ãã įš°ãčŋããĢãĒããžããããããĢã¯å¤ããŽåŠįšããããžãããããĢäŧ´ããããĢãã¨ããĢãXããããŗããĢããĸãŧããã¯ããŖããĢãã¨ããŖããˇãĨįŽĄįãĢéĸããĻãããžããžãĒãã¨ãĢã¤ããĻ芹ããĻããžããã ã ããããããã¨ãã¨č¨ããããŽã§ãã ã䏿ãĒįšãããããžãããããæ°čģŊãĢãåãåãããã ããã ããĒãã饧åŽĸã§ãããããžããžãĒãĩããŧãããŧãēãããå ´åã¯ããĩããŧãããąãããčĒįąãĢéäŋĄãããŗããĨãããŖSlackãããŽäģãŽå ´æã§ããæ°čģŊãĢãåãåãããã ããã ãããĻãã¤ããŽãããĢãį§ããĄã¯ããĒããĢæčŦããĻããžãã ãžãããžãčŗĒåãããå ´åã¯ããæ°čģŊãĢãåãåãããã ããã ãããã¨ãããããžããã
Â
ãããĢčŠŗãã
- ãããĢãŧã¯åããĻã§ãã? å§ããžãããã
- æŗ¨įŽãŽãŦã¤ãã§DockerčŖŊåãæˇąãæãä¸ããžãã
- Docker Newsletter ãčŗŧčĒããĻãã ããã
- Docker ããšã¯ããããŽææ°ãĒãĒãŧãšãå Ĩæããžãã
- čŗĒåããããžãã? Docker ãŗããĨãããŖããæäŧãããžãã