グãƒŦãƒŧ
ドッã‚Ģãƒŧã‚ŗãƒŗ

Docker Rocks in Node.js, 2023 ã‚¨ãƒ‡ã‚Ŗã‚ˇãƒ§ãƒŗ

Bret Fisher が、Docker ツãƒŧãƒĢãĢé–ĸするすずãĻãŽæœ€č‰¯ãŽNode.jsãŽãƒ’ãƒŗãƒˆã¨æˆĻį•ĨãĢé–ĸする 2023 ã‚ĸップデãƒŧトを提䞛しぞす。 äģŠåš´ã¯ã€Node.js Wolfi ã‚¤ãƒĄãƒŧジをåŸēæœŦã‚¤ãƒĄãƒŧジぎ推åĨ¨ãƒĒ゚トãĢčŋŊ加したり、Docker Scout でNode.jsį”ģåƒåˆ†æžã‚’čĄŒãŖãŸã‚Šã€čļ…éĢ˜é€Ÿé–‹į™ēぎためぎ Compose Sync ã‚ģットã‚ĸップをčŋŊ加したりと、新たãĢčŋŊ加されぞした。

こんãĢãĄã¯ã€‚ よし、これがčĻŗåŽĸ参加型だ。 ã§ãã‚‹ã ã‘é€€åąˆãĢãĒらãĒいようãĢしたいです。 ã ã‹ã‚‰ã€į§ãŽåå‰ã¯ãƒ–ãƒŦットです。 DockerでNode.jsčŦ›æŧ”ã‚’čĄŒã†ãŽã¯äģŠå›žã§3å›žį›Žã§ã™ã€‚ だから、これはãƒĒフãƒŦãƒƒã‚ˇãƒĨです。 そしãĻã€į§ã¯ã„ã¤ã‚‚ã€5æžšãŽã‚šãƒŠã‚¤ãƒ‰ã‚’ã‚„ã‚ã†ã¨æ€ãŖãĻいぞす。 5 つぎ゚ナイドが変更されぞす。 こぎ中ぎすずãĻãŒį•°ãĒりぞす。 ãĒぜãĒら、DockerãĢは新しいもぎがたくさんあるからです。 ノãƒŧドãĢいくつかぎ変更が加えられぞした。 ã„ãã¤ã‹ãŽã‚ŗãƒžãƒŗãƒ‰ã€ã„ãã¤ã‹ãŽå¤‰æ›´ãŒåŠ ãˆã‚‰ã‚Œãžã—ãŸã€‚

ã ã‹ã‚‰ã€ä¸€įˇ’ãĢ冒é™ēするんだから、åĢんでãģしい。 įš°ã‚Ščŋ”しãĢãĒりぞすが、čĻŗåŽĸぎ参加です。 そしãĻ、čŗĒå•ãŽæ™‚é–“ã‚’ãŸãŖãˇã‚Šã¨æŽ‹ã—ãĻおこうと思いぞす。 ã ãŖãĻ、3æ™‚é–“ã§čŠąã›ã‚‹ã§ã—ã‚‡? YouTubeでNode.js for DockerãŽã‚ŗãƒŧ゚全äŊ“ã‚’æŒãŖãĻいぞすが、 45 分ではありぞせん。 こぎčŦ›æŧ”で取り上げãĒいčŗĒ問がある場合は、前嚴ãĢさかぎãŧãŖãĻ、すずãĻ YouTube でã‚ĒãƒŗãƒŠã‚¤ãƒŗãĢãĒãŖãĻいることをįĸēčĒã—ãŸã„ã¨æ€ã„ãžã™ã€‚ そしãĻ、それをčĻ‹ãĻã€ããŽį‰šåŽšãŽčŗĒ問ãĢį­”ãˆãĻください。 ãĒぜãĒã‚‰ã€į§ã¯æ–°ã—ã„ã‚‚ãŽã‚’čŋŊ加しįļšã‘ãĻいãĻ、それをすずãĻここãĢ収めることができãĒいからです。

æ–°į€ã¨æœ€æ–°

新しいもぎや最新ぎもぎãĢį„Ļį‚šã‚’åŊ“ãĻãĻ、äģŠåš´ãŽæ–°ã—いもぎをすずãĻ手ãĢå…ĨれられるようãĢしたいと思いぞす。 そしãĻ、ここでぎデã‚ļã‚¤ãƒŗã¯ã€čĒ°ãŽãŸã‚ãŽã‚‚ãŽãĒぎかということです。 åŗã€‚ つぞり、あãĒたはいくつかぎノãƒŧドとDockerをįŸĨãŖãĻいãĻã€ãã‚Œã‚’į´ æ™´ã‚‰ã—ãã—ãŸã„ã¨æ€ãŖãĻいるぎです。 そしãĻã€į§ã¯ã‚ĸドバイã‚ļãƒŧとしãĻ多くぎチãƒŧムとäģ•äē‹ã‚’しãĻいぞす。 単ãĒã‚‹åŽŸčŖ…č€…ã§ã¯ãĒãã€į§ã¯åŊŧらぎもぎをčĻ‹ãĻã€ãã‚Œã‚’æ”šå–„ã™ã‚‹æ–šæŗ•ãĢついãĻã‚ĸドバイ゚しãĻいぞす。 į‰Šäē‹ã‚’åˆį†åŒ–ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚Šã‚ˇãƒŗãƒ—ãƒĢãĢãĒり、より厉全ãĢãĒりぞす。 だから、ä슿—Ĩã¯į´ æ™´ã‚‰ã—ã„ã‚Ŋãƒŧ゚ãƒĸãƒŧドãĢčĄŒããžã™ã€‚ そしãĻ、ä¸ģãĢ4つぎことをčĒŦ明し、最垌ãĢį”Ÿį”Ŗãƒã‚§ãƒƒã‚¯ãƒĒã‚šãƒˆã‚’į´šäģ‹ã—ぞす。

そこで、Node ãƒ•ã‚Ąã‚¤ãƒĢ、Node Dockerfile ぎベ゚ト ãƒ—ãƒŠã‚¯ãƒ†ã‚Ŗã‚šã‹ã‚‰å§‹ã‚ãžã™ã€‚ ã“ã‚Œã¯ã€ã‚¤ãƒŗã‚ŋãƒŧネットでå…Ĩ手できるåŸēæœŦįš„ãĒ 101 ではありぞせん。 これはそれだけではありぞせん。 それから、ベãƒŧã‚šã‚¤ãƒĄãƒŧジãĢついãĻå°‘ã—ãŠčŠąã—ã—ãžã™ãŒã€æ–°ã—ã„ã‚¨ã‚­ã‚ĩã‚¤ãƒ†ã‚Ŗãƒŗã‚°ãĒことãĢついãĻčŠąã—ãŸã„ãŽã§ã™ãŒã€ãã‚Œã‹ã‚‰ã€Œįĩᅵ›ãŽč°ˇã€ã¨ã„うようãĒã€é›Ŗã—ã„ã§ã™ã­ã€‚ 初æ—Ĩã‹ã‚‰įœŸãŽæœŦį•Ēį’°åĸƒã€ã‚¨ãƒŗã‚ŋãƒŧプナイã‚ēグãƒŦãƒŧドぎノãƒŧãƒ‰ã‚¤ãƒĄãƒŧジãĢį§ģčĄŒã™ã‚‹ãŽã¯ã€æ€ãŖãŸã‚ˆã‚Šã‚‚é›Ŗã—ã„ã“ã¨ã§ã™ã€‚ įš†ã•ã‚“ãŽä¸­ãĢは、あãĒたがčŠĻしたすずãĻぎことãĢついãĻã€į´ æ™´ã‚‰ã—ã„įĩŒé¨“ã‚„į´ æ™´ã‚‰ã—ã„į‰ŠčĒžã‚’æŒãŖãĻいるäēēもいるでしょう。

ノãƒŧドプロã‚ģ゚ぎčĩˇå‹•ã¨ã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚ĻãƒŗãĢついãĻčĒŦ明しぞす。 そぎãģとんおは、原際ãĢã¯į§ãŒå‰åš´ã‚’å‚į…§ã™ã‚‹ã“ã¨ãĢãĒã‚‹ã§ã—ã‚‡ã†ãŒã€į§ã¯ã‚ãĒたãĢすずãĻぎ核åŋƒã‚’与えるためãĢそれãĢついãĻ 15 分ãģおįļšã‘ãŸãŽã§ã€į§ãŸãĄã¯ããŽåŸēæœŦをã‚Ģバãƒŧしぞす。 æŦĄãĢã€į§ã¯ Compose が大åĨŊきãĒぎで、新しい Compose ãĢついãĻãŠčŠąã—ã—ãžã™ã€‚ äģŠã§ã‚‚、Kubernetesã§ä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいるすずãĻぎチãƒŧムや、あらゆる洞手ãĒツãƒŧãƒĢをäŊŋãŖãĻも、Composeは、ロãƒŧã‚ĢãƒĢ開į™ēぎ最遊化と開į™ēã‚ģットã‚ĸãƒƒãƒ—ãŽį°Ąį´ åŒ–ãŽãŸã‚ãĢäŊ•åēĻもčļŗã‚’運んでくれる場所です。 į§ã¯æ šãŖã‹ã‚‰ãŽé‹į”¨č€…ã§ã™ãŒã€é–‹į™ēã¯ã§ãã‚‹ã ã‘ã‚ˇãƒŗãƒ—ãƒĢãĢã—ãŸã„ã¨æ€ãŖãĻいぞすよね? ã§ã™ã‹ã‚‰ã€į§ãŸãĄã¯įš†ã€æœŦį•Ēį’°åĸƒã¨ãžãŖãŸãåŒã˜ã‚ˆã†ãĢčĻ‹ãˆã‚‹ãŒã€éžå¸¸ãĢäŊŋいやすくéĢ˜é€ŸãĒé­”æŗ•ãŽã‚ˆã†ãĒ開į™ē゚ã‚ŋãƒƒã‚¯ã¨ã„ã†įžŽã—ã„ã‚ĸイデã‚ĸを望んでいぞす。 ãã‚Œã¯é›Ŗã—ã„ã§ã™ã‚ˆã­? ですから、Compose はロãƒŧã‚ĢãƒĢで、čŋ…é€Ÿã§ã€ã‚ˇãƒŗãƒ—ãƒĢãĒぎで、äģŠã§ã‚‚æ°—ãĢå…ĨãŖãĻいぞす。 ãƒ•ã‚Ąã‚¤ãƒĢã¯į†č§Ŗã—ã‚„ã™ãã€ã“ã“æ•°åš´ã§å¤šããŽæ–°ã—ã„æ›´æ–°ãŒã‚ã‚Šã€į‰šãĢæ˜¨åš´ãŽį§ãŽčŦ›æŧ”ã‚„ 2019ぎčŦ›æŧ”ã‚’čĻ‹ãĻいãĒい場合はãĒおさらです。

ドッã‚Ģãƒŧãƒ•ã‚Ąã‚¤ãƒĢ

Dockerfileは、äēēã€…ãŒį„Ąåˆ†åˆĨãĒæąēåŽšã‚’ä¸‹ã—å§‹ã‚ã‚‹æœ€åˆãŽå ´æ‰€ã§ã‚ã‚Šã€ã‚¤ãƒŗã‚ŋãƒŧネットは多くぎことを間違える傞向があるため、すぐãĢDockerfileãĢéŖ›ãŗčžŧãŋぞしょう。 åŽŸéš›ã€į§ãŒã‚ˆãč¨€ãŖãĻã„ãŸãŽã¯ã€ã‚¤ãƒŗã‚ŋãƒŧネットでこぎ 101 をčĻ‹ãŸäēēはいるだろうか、というもぎでした。 手を挙げぞすよね? 過åŽģ 10 嚴間ぎすずãĻぎブログ投į¨ŋは、これがNodeぎやり斚です。

čĒ°ã‹ãŒåŊŧらがčĻ‹ãŸã‚‚ãŽã€åŊŧã‚‰ãŒã“ãŽãƒ•ã‚Ąã‚¤ãƒĢã§é–“é•ãŖãĻいると思うことをåĢãļことができぞすか? おそらく、12ãŽã“ã¨ãŒé–“é•ãŖãĻいぞす。 すずãĻãĢおいãĻã‚ŗãƒ”ãƒŧ。 ええ、ええ、あそこぎ一į•Ē下。 ã‚ŗãƒ”ãƒŧ ã‚ŗãƒžãƒŗãƒ‰ã¯ 2 ã¤ã‚ã‚Šãžã™ãŒã€ã“ã‚Œã¯æŠ€čĄ“įš„ãĢã¯æ­Ŗã—ã„ã§ã™ã€‚ äģ–ãĢは。äģ–ãĢäŊ•かčĻ‹ãĻくれるäēēはいぞすか? ベãƒŧã‚šã‚¤ãƒĄãƒŧジですよね? そこãĢは間違いãĒく攚善ぎäŊ™åœ°ãŒã‚りぞすよね? これはすずãĻぎDocker 101 äž‹ã§ã™ãŒã€ãŠãã‚‰ãã‚¤ãƒŗã‚ŋãƒŧネット上ぎčĒ°ã‚‚ãŒäŊŋį”¨ã™ãšãã‚¤ãƒĄãƒŧジではありぞせん。 į§ã¯æ„čĻ‹ã‚’æŒãŖãĻいぞす。 WORKDIRは原際ãĢは過åŽģ3嚴間でいくつかぎ変更が加えられãĻおり、WORKDIRは原際ãĢã¯æ¨Šé™ã‚’æ­Ŗã—ãå‰˛ã‚ŠåŊ“ãĻãĻいぞせんが、ノãƒŧãƒ‰ã‚¤ãƒĄãƒŧジはすずãĻぎDockerã‚¤ãƒĄãƒŧジと同様ãĢデフりãƒĢトでeasyãƒĸãƒŧドであり、最も厉全ãĒベ゚トãƒĸãƒŧãƒ‰ã‚’æ„å‘ŗã™ã‚‹ã‚ã‘ã§ã¯ãĒいため、ぞだrootをäŊŋį”¨ã—ãĻいることãĢ気äģ˜ãã§ã—ょう。

2013åš´åŊ“時、åŊŧらがこれらぎį”ģ像をäŊœãŖãŸã¨ãã€åŊŧã‚‰ã¯å˜į´”åŒ–ã¨äŊŋã„ã‚„ã™ã•ã‚’æą‚ã‚ãĻã„ãžã—ãŸãŒã€į§ãŸãĄã¯ãã‚Œã¨ã€ãĒぜそれをすずãĻ変更したいぎかãĢついãĻčĒŦæ˜Žã—ãžã™ã€‚ãã‚Œã‚’åˆˇæ–°ã—ãĻ、これが初æ—Ĩã ãŖãŸã‚‰ãŠã†ã—ãžã™ã‹? これはåŋ…ずしもæœŦį•Ēį’°åĸƒãŽæē–備ができãĻいるわけではありぞせんが、初æ—ĨãŽã‚¤ãƒĄãƒŧジです。 Tier 1 でã‚ĩポãƒŧトされãĻいるビãƒĢドがあるぎで、Nodeland でįŸĨらãĒã‹ãŖãŸæ–šãŽãŸã‚ãĢčĒŦ明すると、Node プロジェクトは、åŸēæœŦįš„ãĢ Node ᔍãĢさぞざぞãĒã‚ŗãƒŗãƒ‘ã‚¤ãƒĢとさぞざぞãĒプナットフりãƒŧムをã‚ĩポãƒŧトしãĻおり、Tier 1とはäŊ•ã‹ã¨ã„ã†éšŽåą¤ãƒŠãƒŗã‚­ãƒŗã‚°ãŒã‚ã‚Šã€ã“ã‚Œã¯æœ€éĢ˜ã§ã™ã€‚ Tier 1ぎã‚ĩポãƒŧトåĨ‘į´„ãĒおを取垗できぞす。 ãƒ†ã‚Ŗã‚ĸ 2 ã¯ã€į§ãŸãĄãŒæœ€å–„ã‚’å°Ŋãã™ã“ã¨ã‚’æ„å‘ŗã—ãžã™ã€‚ それãģお重čĻã§ã¯ã‚ã‚Šãžã›ã‚“ãŒã€čŠĻしãĻãŋãŸã¨ã“ã‚ã€åŽŸé¨“įš„ã¯ãƒ™ãƒŧã‚ŋį‰ˆãĢãĒりぞす。 うぞくいく場合もあれば、うぞくいかãĒい場合もありぞすが、äŊ•ã‚‚äŋč¨ŧしぞせん。 åĨ‡åĻ™ãĒことãĢã€ã‚ã‚‹ã„ã¯įšŽč‚‰ãĒことãĢ、Dockerでさえ時々Alpineã‚¤ãƒĄãƒŧジを推åĨ¨ã—ãĻいぞすが、ä슿—ĨはそれãĢついãĻč‰¯ã„æ„å‘ŗã§ã¯ãĒããŠčŠąã—ã—ãžã™ã€‚ ã‚ĸãƒĢãƒ‘ã‚¤ãƒŗã€ã“ãŽãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã¯į´ æ™´ã‚‰ã—ã„ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã§ã™ã€‚ Node、Alpineã€ãŠã‚ˆãŗproductionはお勧めしぞせん。

į§ã¯Nodeで 15 嚴、Dockerで 10 嚴働いãĻきぞしたが、最įĩ‚įš„ãĢã¯ã€į§ãŒæēã‚ãŖãĻいるすずãĻぎプロジェクトで、大čĻæ¨ĄãĒNodeぎことをæœŦį•Ēį’°åĸƒã§čĄŒãŖãĻいる場合、最įĩ‚įš„ãĢはAlpineå›ēæœ‰ãŽå•éĄŒãŒį™ēį”Ÿã—ã€ä¸ģãĢAlpineã§ã‚ŗãƒŗãƒ‘ã‚¤ãƒĢã•ã‚Œã‚‹æ–šæŗ•ã§ã‚ã‚‹Muslが原因です。 ぞた、BusyBoxãŒå•éĄŒãĢãĒることもありぞす。 だから、ä슿—Ĩã¯į§ãŒã‚ĸãƒĢãƒ‘ã‚¤ãƒŗã‚’ãŠå‹§ã‚ã™ã‚‹ãŽã‚’čĻ‹ã‚‹ã“ã¨ã¯ã‚ã‚Šãžã›ã‚“ãŒã€åŋƒé…ã—ãĒã„ã§ãã ã•ã„ã€į§ã¯ã‚ãĒたぎためãĢさらãĢč‰¯ã„æŽ¨åĨ¨äē‹é …ã‚’ãŸãã•ã‚“æŒãŖãĻいぞす。 1 つは、Node ぎ Tier 1 でã‚ĩポãƒŧトされãĻいるビãƒĢドãĢã‚ã‚‹ã‚¤ãƒĄãƒŧジがåŋ…čĻã§ã‚ã‚Šã€Alpine ã¯åŽŸé¨“įš„ãĢč¨­åŽšã•ã‚ŒãĻã„ã‚‹ã‚¤ãƒĄãƒŧジです。

æŦĄã¯ã€į”ģåƒã‚’ãƒ”ãƒŗį•™ã‚ã—ãžã™ã€‚ ã—ãŸãŒãŖãĻ、į”ģåƒãŽãƒ”ãƒŗį•™ã‚ãĢついãĻįŸĨらãĒã‹ãŖãŸå ´åˆã¯ã€ã—ã°ã‚‰ãįĩŒãĄãžã™ãŒã€ã‚ŋã‚°ã¯å†åˆŠį”¨ã§ãã‚‹ãŸã‚ã€ãžãŖãŸãåŒã˜åŸēæœŦį”ģ像を取垗できることをäŋč¨ŧできぞすよね? こぎ場合、Node 20をäŊŋį”¨ã—ãĻいるため、パッチãƒŦベãƒĢぎバãƒŧã‚¸ãƒ§ãƒŗãĢå›ē厚しãĻいぞせんが、SHAãƒãƒƒã‚ˇãƒĨしãĻいぞす。 さãĻã€æŠ€čĄ“įš„ãĢは、こぎようãĒã‚¤ãƒĄãƒŧジをSHAãƒãƒƒã‚ˇãƒĨする場合、Dockerã‚¤ãƒĄãƒŧã‚¸ã‚ŗãƒžãƒŗãƒ‰ã‚’åŽŸčĄŒã™ã‚‹ã ã‘ã§å–åž—ã§ãã‚‹ãƒãƒƒã‚ˇãƒĨをå…Ĩれると、原際ãĢã¯ã€Œâ€“ãƒ€ã‚¤ã‚¸ã‚§ã‚šãƒˆã‚’čĄ¨į¤ē」ãĒおãĢãĒりぞす。 ã‚ŗãƒžãƒŗãƒ‰ã‚’åŋ˜ã‚ŒãĻã—ãžã„ãžã—ãŸãŒã€ãã‚Œã‚‰ãŽãƒãƒƒã‚ˇãƒĨを取垗できぞす。 æŠ€čĄ“įš„ãĢは、ã‚ŋã‚°ã¯į„ĄčĻ–ã•ã‚Œãžã™ãŒã€ã‚ŋã‚°ã¯ã€ãƒ•ã‚Ąã‚¤ãƒĢãĢãƒ”ãƒŗį•™ã‚ã—ãŸå†…åŽšã‚’äēē間がįŸĨるためぎもぎです。 そぎため、SHAãƒãƒƒã‚ˇãƒĨをå›ē厚すると、ã‚ŋã‚°ã¯į„ĄčĻ–ã•ã‚Œã€ãã‚ŒãŒä¸€äŊ“äŊ•からæĨたぎかをįŸĨるためぎわかりやすいナベãƒĢとしãĻäŊŋį”¨ã—ãĻいぞす。

つぞり、Node 20 bookworm は、これがベãƒŧ゚ãĢãĒãŖãĻいる Debian ぎバãƒŧã‚¸ãƒ§ãƒŗã€ã¤ãžã‚Šæœ€æ–°ãŽ Debian であり、æŦĄãĢ Slim ã§ã‚ã‚‹ã“ã¨ã‚’æ„å‘ŗã—ãžã™ — 常ãĢ Slim Images をäŊŋį”¨ã—ãĻください。 ぞた、Docker HubぎすずãĻãŽãƒ—ãƒ­ã‚°ãƒŠãƒŸãƒŗã‚°č¨€čĒžã¯ã€å…Ŧåŧã‚¤ãƒĄãƒŧジをå…Ĩ手できる場合は、常ãĢSlimをäŊŋį”¨ã—ãĻください。 Debian ぎ Slim äģĨå¤–ãŽå¤‰į¨Žã¯æąēしãĻæŦ˛ã—ãã‚ã‚Šãžã›ã‚“ãŒã€ããŽį†į”ąã¯ã™ããĢわかるでしょう。 非rootとしãĻåŽŸčĄŒã—ãĻいぞす。 さãĻ、過åŽģ3嚴間でäŊ•ã‹ãŒå¤‰ã‚ãŖãŸãŽã§ã€å…ŦåŧãŽãƒŽãƒŧãƒ‰ã‚¤ãƒĄãƒŧジãĢデフりãƒĢトでįĩ„ãŋčžŧぞれãĻいるãƒĻãƒŧã‚ļãƒŧノãƒŧドをそこãĢ配įŊŽã§ãã‚‹ã‚ˆã†ãĢãĒりぞした。 ãƒĻãƒŧã‚ļãƒŧはæ—ĸãĢ存在しぞす。 į§ã¯ãã‚Œã‚’ãã“ãĢįŊŽã„ãĻ、非rootとしãĻåŽŸčĄŒã™ã‚‹ã“ã¨ãŒã§ããžã™ã€‚ これがéĩです。 多くぎKubernetesクナ゚ã‚ŋã€į‰šãĢæ”ŋåēœã‚„é‡‘čžãĒãŠãŽåˆ†é‡Žã§ã¯ã€ã‚ŗãƒŗãƒ†ãƒŠã‚’rootとしãĻåŽŸčĄŒã™ã‚‹ã“ã¨ã¯ã§ããžã›ã‚“ã€‚ だから、あãĒたはそれをしãĒければãĒりぞせん。 そしãĻ、äģŠã€WORKDIRぎ前ãĢãã‚Œã‚’čĄŒã†ã¨ã€åŽŸéš›ãĢはäģŠåš´ãŽåˆã‚ãĢ、おそらく2〜3嚴前であることをįŸĨりぞしたが、WORKDIRを更新しãĻ、そぎ上ぎãƒĻãƒŧã‚ļãƒŧãĢåŸēãĨいãĻ遊切ãĒæ¨Šé™ã‚’å‰˛ã‚ŠåŊ“ãĻるようãĢしぞした。

ã—ãŸãŒãŖãĻ、最初ãĢãƒĻãƒŧã‚ļãƒŧを配įŊŽã—、それを非rootãĢし、そぎWORKDIRをäŊœæˆã™ã‚‹ã¨ã€ãƒŽãƒŧドãƒĻãƒŧã‚ļãƒŧãĢ樊限が遊切ãĢäģ˜ä¸Žã•ã‚Œã‚‹ãŸã‚ã€ãã‚Œã‚‰ã‚’æ‰‹å‹•ã§å‰˛ã‚ŠåŊ“ãĻるåŋ…čĻã¯ã‚ã‚Šãžã›ã‚“ã€‚ もしあãĒãŸãŒį§ãŽãƒŽãƒŧãƒ‰ã‚ŗãƒŧ゚を受čŦ›ã—ãĻいるäēēãĒã‚‰ã€į§ãŒã‚ãĒたãĢč¨€ãŖãĻã„ãŸæ–šæŗ•ã¯ã€MAKEDIRとå…Ĩ力しãĻ、これらすずãĻãŽã“ã¨ã‚’åŽŸčĄŒã‚ŗãƒžãƒŗãƒ‰ã§čĄŒã‚ãĒければãĒらãĒいということです。 しかし、もうそれをするåŋ…čĻã¯ã‚ã‚Šãžã›ã‚“ã€‚ ããŽæ–šãŒį°Ąå˜ã§ã™ã€‚ æŦĄãĢã€ã‚ŗãƒ”ãƒŧがありぞす。 そぎため、ãƒĢãƒŧトãƒĻãƒŧã‚ļãƒŧではãĒく通常ぎãƒĻãƒŧã‚ļãƒŧとしãĻ、遊切ãĒæ¨Šé™ã§ã‚ŗãƒ”ãƒŧしãĻいぞす。 ããŽãŸã‚ã€ã‚ŗãƒ”ãƒŧã‚’čĄŒã†ã¨ãã¯ã„ã¤ã§ã‚‚chownをäŊŋį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ そしãĻ、そこãĢč¤‡æ•°ãŽãƒŦベãƒĢãŒã‚ã‚Šã€ãƒ‘ãƒƒã‚ąãƒŧジと掋りぎã‚Ŋãƒŧã‚šã‚ŗãƒŧãƒ‰ãŽåŽŸéš›ãŽã‚ŗãƒ”ãƒŧがありぞす。

npmぎci

そしãĻ、æŦĄã¯äŊ•でしょうか? 「npm ciã€ã‚’ã‚„ãŖãĻいぞす。 これは原際ãĢã¯æ­Ŗã—ãã‚ã‚Šãžã›ã‚“ã€ãĒぜãĒã‚‰į§ã¯ä슿—Ĩã€į§ãŸãĄã€Œnpm ci」が3回、ぞたは2回変更されたことをįŸĨãŖãŸã‹ã‚‰ã§ã™ã€‚ äģŠå›žã§3å›žį›ŽãŽæŧ”å‡ēです。 ã—ãŸãŒãŖãĻ、äģŠåžŒãŽã‚šãƒŠã‚¤ãƒ‰ã§ã¯ã€æŠ€čĄ“įš„ãĢは「npm ci omit dev」が望ぞしいことがわかりぞす。 dev ã‚’ãƒ€ãƒƒã‚ˇãƒĨã§įœį•Ĩしぞす。 ゚ナイドãĢ襨į¤ēされ、こぎãƒĒポジトãƒĒãĢもありぞす。 ごčϧãĢãĒãŖãĻいãĒい斚ぎためãĢ、゚ナイドぎ最垌ãĢもう一åēĻįŊŽã„ãĻおきぞす。 これらすずãĻぎもぎをåĢむãƒĒポジトãƒĒ全äŊ“、たとえばDockerãƒ•ã‚Ąã‚¤ãƒĢがあり、そぎãƒĒポジトãƒĒを毎嚴更新しįļšã‘ãĻいぞす。 ã—ãŸãŒãŖãĻ、これらすずãĻãŽãƒĄãƒĸã‚’ã‚ˆã‚ŠčŠŗį´°ãĢ取垗できぞす。 æœŦåŊ“ãĢæƒ…å ąãŽåĸ“場です。

ã—ãŸãŒãŖãĻ、開į™ēぎ䞝存é–ĸäŋ‚を削除したり、開į™ēぎ䞝存é–ĸäŋ‚ã‚’é˜˛æ­ĸしたりする「npm ciã€ã‚’åŽŸčĄŒã—ãĻいãĻã€ã‚ŗãƒžãƒŗãƒ‰ã§NPMやそぎäģ–ぎプロã‚ģ゚マネãƒŧã‚¸ãƒŖãƒŧã‚’ãžã åŽŸčĄŒã—ãĻいぞせん。 į§ãŸãĄã¯ã€NPMをæœŦį•Ēį’°åĸƒã§äŊŋį”¨ã—ãĻã€é•ˇæœŸãĢわたるプロã‚ģã‚šã‚’é–‹å§‹ã™ã‚‹ã“ã¨ã¯æœ›ãžã—ãã‚ã‚Šãžã›ã‚“ãŒã€ããŽį†į”ąãĢついãĻは、垌ãģおčĒŦ明しぞす。 ãã‚Œã§ã€į§ã¯åŽŸéš›ãĢæĨ­į•ŒãŽãƒ„ãƒŧãƒĢが変わるãĢつれãĻいくつかぎことãĢついãĻį§ãŽæ„čĻ‹ã‚’å¤‰ãˆãžã—ãŸãŒã€ããŽã†ãĄãŽ1つは、これがNPMᛪæŸģ、Trivyã‚šã‚­ãƒŖãƒŗã€åąĨ歴書ã‚ģキãƒĨãƒĒãƒ†ã‚Ŗã‚šã‚­ãƒŖãƒŗã‚’čĄŒã†ãŽãĢ最遊ãĒæ–šæŗ•ã‹ã‚‚ã—ã‚ŒãĒいことをäēē々ãĢ教えãĻいたことです。 もしかしたら、゚テãƒŧジとマãƒĢチ゚テãƒŧジぎDockerãƒ•ã‚Ąã‚¤ãƒĢをäŊœã‚‹ã“ã¨ãŒã§ãã‚‹ã‹ã‚‚ã—ã‚Œãžã›ã‚“ãŒã€į§ã¯äģŠã€ã„や、もうそれはやらãĒã„ã¨č¨€ãŖãĻいぞす。

æĨ­į•Œã§ãŽį§ãŽå¸Œæœ›ãŽ1つは、CIツãƒŧãƒĢがビãƒĢド゚テãƒŧジとDockerã‚ŗãƒžãƒŗãƒ‰ã€ãžãŸã¯æœŦčŗĒįš„ãĢDockerぎ各゚テップをCIã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã§į…§ã‚‰ã™ã“ã¨ãŒã§ãã‚‹ã‚‚ãŽã¨ã—ãĻæ¤œč¨Žã—å§‹ã‚ã€åŸēæœŦįš„ãĢDockerãƒ•ã‚Ąã‚¤ãƒĢをäŊŋį”¨ã—ãĻ多くぎCIã‚’åŽŸčĄŒã§ãã‚‹ã‚ˆã†ãĢすることでした。 そしãĻ、多くぎč‡Ē動化、テ゚ト、そぎäģ–į§ãŸãĄãŒã‚„ã‚‰ãĒければãĒらãĒいすずãĻぎこと。 æĨ­į•Œã§ã¯ãã†ã§ã¯ãĒã‹ãŖãŸãŽã§ã€ããŽãŸã‚ãŽæ–šæŗ•ã¨ã—ãĻDockerビãƒĢãƒ‰ã‚’æå”ąã—įļšã‘ぞしたが、もうお勧めしぞせん。 最新ぎCI、GitHub Actions、GitLabãĒおは、NPMᛪæŸģやCVEã‚šã‚­ãƒŖãƒŗãĒãŠã‚’čĄŒã†ãŸã‚ãŽãƒã‚¤ãƒ†ã‚Ŗãƒ–ã‚ĩポãƒŧトが充原しãĻいぞす。 ですから、これらぎ゚テãƒŧã‚¸ã¯ã‚‚ã†ãŠå‹§ã‚ã—ãžã›ã‚“ãŒã€ã“ã‚Œã¯į´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚ これãĢより、Dockerãƒ•ã‚Ąã‚¤ãƒĢãŒį°Ąį´ åŒ–ã•ã‚Œãžã™ã€‚ į§ãŸãĄã¯ãã‚Œã‚’ã™ã‚‹åŋ…čĻã¯ã‚ã‚Šãžã›ã‚“ã€‚

Docker init

Docker init ãĢついãĻčŠąã—ãžã™ã€‚ã¤ãžã‚Šã€ã“ã‚Œã¯æ–°ã—ã„ã“ã¨ã§ã™ã€‚åŸēčĒŋčŦ›æŧ”ã§čžã„ãŸã“ã¨ã‚‚ã‚ã‚Šãžã™ã­ã€‚Docker init をäŊŋį”¨ã™ã‚‹ã¨ã€ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã‚’æœ€åˆã‹ã‚‰é–‹å§‹ã§ãã‚‹ãŸã‚ã€į‹Ŧč‡Ēぎ Dockerfile がäģ˜åąžã—ãĻいぞす。そしãĻ、これはあãĒãŸãŒããŽã‚ŗãƒžãƒŗãƒ‰ã‚’åŽŸčĄŒã—ãŸå ´åˆãŽä¸€į¨ŽãŽå¤–čĻŗãĒぎで、あãĒたがDockerを初めãĻäŊŋį”¨ã—ãŸå ´åˆã€Dockerã¯ã€ä¸–į•Œä¸­ãŽäģ–ぎすずãĻãŽãƒ‘ãƒƒã‚ąãƒŧジマネãƒŧã‚¸ãƒŖãƒŧと同様ãĢ、少ãĒくともこぎinitã‚Ēãƒ—ã‚ˇãƒ§ãƒŗã‚’æŒãŖãĻã„ãžã™ã€‚ã ã‹ã‚‰ã€ãã‚Œã¯į´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚æ–°ã—ã„äēēãĢã¨ãŖãĻã¯į´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚æ„čĻ‹ã¯ã‚ã‚Šãžã™ã€‚čǰãĢã¨ãŖãĻã‚‚åŽŒį’§ã§æ™Žéįš„ãĒもぎはãĒいということですよね?そしãĻ、たくさんぎčŗĒ問がå‡ēã•ã‚Œã€ãŸãã•ã‚“ãŽį­”ãˆãŒå‡ēãĻ、3ã¤ãŽãƒ•ã‚Ąã‚¤ãƒĢがäŊœæˆã•れぞすが、これは非常ãĢį´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚Docker ignoreで始ぞり、Dockerfileで始ぞり、Composeãƒ•ã‚Ąã‚¤ãƒĢã‚’æäž›ã—ãžã™ã€‚ãĄãĒãŋãĢ、Composeãƒ•ã‚Ąã‚¤ãƒĢはäģŠã€æ¨™æē–は「compose.yaml」ですが、Docker compose.ymlではãĒく、これは、 10 åš´é–“ã“ã‚Œã‚’čĄŒãŖãĻããŸį§ãŸãĄå…¨å“ĄãŒå…Ĩ力しãĻきたことです。すずãĻãŽãƒ•ã‚Ąã‚¤ãƒĢ名はåŧ•きįļšãã‚ĩポãƒŧトされãĻいぞすが、これは新しいčĻå‰‡ã§ã™: 'compose.yaml'ã€‚ã—ãŸãŒãŖãĻã€ã“ã‚Œã‚‰ãŽãƒ•ã‚Ąã‚¤ãƒĢをäŊœæˆã—、Dockerぎ「äŊœæˆã€ã‚’čĄŒã†ã“ã¨ã‚’æŽ¨åĨ¨ã—ぞす。

ãã‚Œã§ã¯ã€æ™‚é–“ãŒã‚ã‚‹ã†ãĄãĢį°Ąå˜ãĢčĻ‹ãĻãŋぞしょう。 ですから、ここでDockerfileをčĻ‹ã‚‹ã¨ã€åŽŸéš›ãĢはかãĒり洞手です。 ご存じãĒい斚ぎためãĢčĒŦ明すると、Buildkit がデフりãƒĢトぎビãƒĢダãƒŧãĢãĒãŖãŸãŸã‚ã€ãƒ•ãƒ­ãƒŗãƒˆã‚¨ãƒŗãƒ‰ã¨å‘ŧばれるもぎがあり、Buildkit ãŒå‹•įš„ãĢ更新され、多くぎ新抟čƒŊをã‚ĩポãƒŧトできるようãĢãĒりぞした。 そぎため、DockerfileãĢは多くぎ新しいことがčĩˇã“ãŖãĻいぞすが、åŋ…ずしもOCIä앿§˜ãĢåĢぞれãĻいるわけではありぞせん。 これは Buildkit ã§čĄŒã‚ã‚Œã€ãƒ•ãƒ­ãƒŗãƒˆã‚¨ãƒŗãƒ‰ã¨å‘ŧばれるもぎをäģ‹ã—ãĻčĄŒã‚ã‚Œãžã™ã€‚ ã—ãŸãŒãŖãĻã€ããŽæ§‹æ–‡čĄŒã‚’å…Ĩれると、åŸēæœŦįš„ãĢäŋč¨ŧされるぎは、すずãĻぎチãƒŧãƒ ãƒĄãƒŗãƒãƒŧãŒã‚¤ãƒĄãƒŧジぞたはCIビãƒĢãƒ‰ã‚¤ãƒĄãƒŧジをビãƒĢドするときãĢã€å…¨å“ĄãŒBuildkitをæœŦæĨあるずきようãĢäŊŋį”¨ã—ãĻいるとäģŽåŽšã™ã‚‹ã¨ã€ãã‚ŒãŒäžį„ļとしãĻ最éĢ˜ãŽã‚ŗãƒŗãƒ†ãƒŠãƒ“ãƒĢダãƒŧã§ã‚ã‚‹ãŸã‚ã€ã‚¤ãƒĄãƒŧジぎビãƒĢド内で同じ抟čƒŊã‚ģットãĢ寞しãĻ同じã‚ĩポãƒŧトを受けることです。 é̘åēĻãĒ抟čƒŊをäŊŋã„å§‹ã‚ã‚‹å ´åˆã¯ã€ãŠãĄã‚‰ãŒé‡čĻã§ã™ã€‚ ããŽã†ãĄãŽã„ãã¤ã‹ãĢついãĻは、いずれčĒŦ明しぞす。 åŽŸéš›ã€ããŽã†ãĄãŽ1つãĢついãĻäģŠãŠčŠąã—ã—ãžã™ã€‚

これは非常ãĢæ–‡æ›¸åŒ–ã•ã‚ŒãŸãƒ•ã‚Ąã‚¤ãƒĢであり、これはすずãĻDockerãĢã‚ˆãŖãĻį”Ÿæˆã•ã‚Œã€ãƒ“ãƒĢド時ãĢãƒ•ã‚Ąã‚¤ãƒĢをマã‚Ļãƒŗãƒˆã™ã‚‹ã‚ˆã†ãĒことがčĻ‹ã‚‰ã‚Œãžã™ã‚ˆã­? つぞり、これはäŊ•嚴も前からある Buildkit ãŽãƒ•ãƒ­ãƒŗãƒˆã‚¨ãƒŗãƒ‰æŠŸčƒŊです。 į§ã¯ã„ã¤ã‚‚ã“ã‚Œã‚’äŊŋį”¨ã—ãŸã‚ŠæŽ¨åĨ¨ã—たりするわけではありぞせん。 į§ã¯ãƒãƒŧムをčĻ‹ãĻ、200ãƒĄã‚ŦぎノãƒŧドãƒĸジãƒĨãƒŧãƒĢã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢしãĻいるぎか、それとも0001ãƒĄã‚ŦぎノãƒŧドãƒĸジãƒĨãƒŧãƒĢã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢしãĻいるぎかを判断するåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ãžãŸã€ãƒŽãƒŧドãƒĸジãƒĨãƒŧãƒĢが大きければ大きいãģお、これはノãƒŧドãƒĸジãƒĨãƒŧãƒĢã‚’ã‚­ãƒŖãƒƒã‚ˇãƒĨしãĻいるぎではãĒく、それらぎノãƒŧドãƒĸジãƒĨãƒŧãƒĢãŽã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢã‚’ã‚­ãƒŖãƒƒã‚ˇãƒĨしãĻいるため、ノãƒŧドãƒĸジãƒĨãƒŧãƒĢã‚’åą•é–‹ã™ã‚‹å‰ãĢこれらぎzipをダã‚Ļãƒŗãƒ­ãƒŧドする可čƒŊ性がéĢ˜ããĒりぞす。 ããŽãŸã‚ã€æ§‹į¯‰æ™‚ãŽã‚¤ãƒŗã‚ŋãƒŧãƒãƒƒãƒˆæ—…čĄŒã‚’į¯€į´„ã§ããžã™ã€‚ これはBuildkitį”¨ãŽDockerビãƒĢダãƒŧãĢã¨ãŖãĻ非常ãĢį‰šæŽŠãĒã“ã¨ã§ã‚ã‚‹ã¨į§ã¯äŋĄã˜ãĻいるぎで、BuildkitをäŊŋį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ įš°ã‚Ščŋ”しãĢãĒりぞすが、それが最éĢ˜ãŽã‚‚ãŽãĒãŽã§ã€ãã‚Œã¯å•éĄŒã‚ã‚Šãžã›ã‚“ã€‚

それで、åŊŧらはあãĒたãĢã“ãŽį´ æ™´ã‚‰ã—ã„å°ã•ãĒãƒ•ã‚Ąã‚¤ãƒĢを与え、それはあãĒたがそれを最遊化するぎを劊けぞす、そしãĻãã‚Œã¯ãƒ•ã‚Ąã‚¤ãƒĢã‚’ã‚ŗãƒ”ãƒŧするたくさんぎæŽĩéšŽã‚’æŒãŖãĻいぞす。 そしãĻ、これはすずãĻå•éĄŒã‚ã‚Šãžã›ã‚“ã€‚ į§ãŒä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいるチãƒŧムでは、Dockerぎノãƒŧドを初めãĻäŊŋį”¨ã™ã‚‹å ´åˆã€ã“ã‚Œã¯å¤šããŽã“ã¨ã‚’å–ã‚Šå…Ĩれるåŋ…čĻãŒã‚ã‚‹ã¨æ„Ÿã˜ãĻいぞす。 į§ã¯ã€ãƒãƒŧムが歊く前ãĢハイハイをし、čĩ°ã‚‹å‰ãĢ歊くことを教え、劊けるようãĢしãĻいぞす。 これは少し旊歊きãĢčŋ‘いぎで、初æ—ĨぎDockerfileではãĒã„ã‹ã‚‚ã—ã‚Œãžã›ã‚“ãŒã€ãžã‚ã€ãã‚Œã¯į´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚ Dockerはそれを提䞛しぞす。 į§ãŒåŒæ„ã§ããĒいことぎ1つは、åŊŧらがデフりãƒĢトでAlpineãĢãĒãŖãĻいることですが、これもぞた、ã‚Ģãƒŗãƒ•ã‚ĄãƒŦãƒŗã‚šã§äŊ•äēēかぎäēēã¨čŠąã—ãĻいたぎですが、 10 嚴間、AlpineをæœŦį•Ēį’°åĸƒã§äŊŋį”¨ã—ãĻいるチãƒŧムを支援しようとしãĻããŸãŒã€į§ã¯ã‚ãã‚‰ã‚ãĻ推åĨ¨ã—ãĻいãĒい。

äģ–ãĢäŊ•をしぞすか? これãĢより、äŊœæˆãƒ•ã‚Ąã‚¤ãƒĢが提䞛されぞすが、これãĢついãĻは垌でčĒŦ明しぞす。 しかし、DockerfileãĢはかãĒã‚Šé­…åŠ›įš„ãĒ新抟čƒŊãŒã„ãã¤ã‹å‚™ã‚ãŖãĻいぞす。 ããŽãŸã‚ã€į†ąåŋƒãĒ Compose ãƒĻãƒŧã‚ļãƒŧであれば、Compose バãƒŧã‚¸ãƒ§ãƒŗã¯ã‚‚ã†ã‚ã‚Šãžã›ã‚“ã€‚ ã“ãŽãƒ•ã‚Ąã‚¤ãƒĢでは、バãƒŧã‚¸ãƒ§ãƒŗ 2 とバãƒŧã‚¸ãƒ§ãƒŗ 3ぎすずãĻぎ抟čƒŊをã‚ĩポãƒŧトするようãĢãĒりぞした。 åŸēčĒŋčŦ›æŧ”でも、čĒ°ã‹ãŒv3ã§ãƒ•ã‚Ąã‚¤ãƒĢするつもりはありぞせん。4 、それはãƒŦã‚Ŧã‚ˇãƒŧとčĻ‹ãĒされぞす。 バãƒŧã‚¸ãƒ§ãƒŗã¯åŋ…čĻã‚ã‚Šãžã›ã‚“ã€‚ すずãĻぎ抟čƒŊは、Compose バãƒŧã‚¸ãƒ§ãƒŗã‚’å‰Šé™¤ã™ã‚‹é™ã‚Šã€compose ã‚ŗãƒžãƒŗãƒ‰ãƒŠã‚¤ãƒŗã§äŊŋį”¨ã§ããžã™ã€‚ åĨåēˇč¨ē断ãĒおãĢついãĻは垌ãģãŠãŠčŠąã—ã—ãžã™ãŽã§ã€ã“ã‚ŒäģĨ上はč§Ļれぞせん。

遊切ãĒベãƒŧã‚šã‚¤ãƒĄãƒŧジ

ã ã‹ã‚‰ã€åŽŒį’§ãĒベãƒŧã‚šã‚¤ãƒĄãƒŧジです。 ã“ãŽčŠąéĄŒã¯ã€5分でも 50 åˆ†ã§ã‚‚čŠąã›ã‚‹ãŽã§ã€ã“ãŽčŠąã§ä¸€į•ĒåĨŊきãĒ部分です。 ã—ã‹ã—ã€į§ãŒä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいるãģとんおぎチãƒŧムでは、åŋ…čρãĒもぎがすずãĻæƒãŖãĻいãĻ、望ぞしくãĒã„č„†åŧ࿀§ãŒãĒい遊切ãĒåŸēæœŦã‚¤ãƒĄãƒŧジをčĻ‹ã¤ã‘ã‚‹ãŽãĢ多くぎ時間がč˛ģやされãĻいぞす。それは小さいです。これら 3 つぞたは 4 ã¤ãŽį•°ãĒã‚‹ãƒĄãƒˆãƒĒックをすずãĻæē€ãŸã—ãĻいぞす。 åŗã€‚ そしãĻ、それは存在しぞせんよね? これはあãĒたぎチãƒŧムãĢį‰šæœ‰ãŽã‚‚ãŽã§ã‚ã‚Šã€į§ãŒä¸€įˇ’ãĢäģ•äē‹ã‚’するãģとんおすずãĻぎチãƒŧムは、文化、čρäģļ、ã‚ģキãƒĨãƒĒãƒ†ã‚Ŗãƒãƒŧムぎé–ĸ与ãĢåŸēãĨいãĻã€į•°ãĒるパ゚を選択しぞす。 そしãĻã€ãã‚Œã¯ãƒãƒŠãƒŗã‚šãŽå–ã‚ŒãŸčĄŒį‚ēです。 より厉全で小さくすればするãģお、それをäŊŋį”¨ã™ã‚‹ãŸã‚ãĢよりé̘åēĻãĢãĒるåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ つぞり、チãƒŧムãĢäŊ•がåŋ…čĻã‹ãĢよりぞす。 ぞた、一部ぎチãƒŧムは、デフりãƒĢトぎå…Ŧåŧã‚¤ãƒĄãƒŧジぎ1ã¤ã§ãžãŖãŸãå•éĄŒã‚ã‚Šãžã›ã‚“ã€‚

最初ぎ 3 つから始めぞしょう。 あãĒたぎäēēį”Ÿã§æąēしãĻそれをäŊŋわãĒいでください。 それをäŊŋį”¨ã™ã‚‹į†į”ąã¯ã‚ã‚Šãžã›ã‚“ã€‚ そぎ上、大きãĒネã‚Ŧãƒ†ã‚Ŗãƒ–ãĒことぎ1つは、これらすずãĻぎCVEをčĻ‹ã‚‹ã“ã¨ãŒã§ããžã™ã€‚ ã¨ã„ã†ã‚ã‘ã§ã€ã“ã‚Œã¯į§ãŒæĨ­į•Œã§č¤‡æ•°ãŽã‚šã‚­ãƒŖãƒŠãƒŧ、2つぎã‚Ēãƒŧãƒ—ãƒŗã‚Ŋãƒŧ゚、2ã¤ãŽã‚ŗãƒžãƒŧã‚ˇãƒŖãƒĢをäŊŋį”¨ã—ãĻいぞす。 ã‚ŗãƒžãƒŧã‚ˇãƒŖãƒĢはčĒ¤æ¤œįŸĨが少ãĒい傞向があることãĢ気ãĨくでしょう。 これは原は最čŋ‘į™ēčĻ‹ã•ã‚ŒãŸã“ã¨ã§ã™ã€‚ そしãĻ、åŊŧらはäģŠé€ąã€ã‚Ēãƒŧãƒ—ãƒŗã‚Ŋãƒŧã‚šãŽã‚šã‚­ãƒŖãƒŠãƒŧと、čĒ¤æ¤œįŸĨぎ可čƒŊæ€§ãŽã‚ã‚‹å•éĄŒã‚’å…ˇäŊ“įš„ãĢéŠį”¨ã—ãĻã„ã‚‹å•†į”¨ãŽã‚šã‚­ãƒŖãƒŠãƒŧとぎ間ãĢは、間違いãĒくいくつかぎį”ģ像ãĢ大きãĒ違いがあるということãĢついãĻã€č¤‡æ•°ãŽäŧščŠąã‚’ã—ãžã—ãŸã€‚ åŊŧらはそれらをより速くäŋŽæ­Ŗã™ã‚‹å‚žå‘がありぞす。 バックグナã‚Ļãƒŗãƒ‰ã§äŊ•がčĩˇã“ãŖãĻいるぎかよくわかりぞせん。 ã‚Ēãƒŧãƒ—ãƒŗã‚Ŋãƒŧã‚šãŽã‚šã‚­ãƒŖãƒŠãƒŧがäŊŋえãĒã„ã¨ã„ã†ã‚ã‘ã§ã¯ã‚ã‚Šãžã›ã‚“ãŒã€į§ãĢã¨ãŖãĻは、Docker Scoutはうぞく抟čƒŊしãĻいãĻ、æœŦåŊ“ãĢ新しいもぎです。 ãžã åŽŒį’§ã§ã¯ã‚ã‚Šãžã›ã‚“ãŒã€ãƒãƒŧãƒ ã¯å¤šããŽãƒ•ã‚Ŗãƒŧãƒ‰ãƒãƒƒã‚¯ã‚’å—ã‘å–ãŖãĻいぞす。

ここでは、Docker Scout ãŒåŽŒį’§ã§ã¯ãĒã„ã‚¤ãƒĄãƒŧジが原際ãĢいくつかあることがわかりぞす。 æ­Ŗã—ãã‚šã‚­ãƒŖãƒŗã•ã‚Œãžã›ã‚“ã€‚ ã§ã‚‚ã€į§ã¯ã„ã¤ã‚‚2į•Ēį›ŽãŽã‚šãƒĒムから始めぞす。 åŗã€‚ ゚ãƒĒãƒ ã¯ãšãŖã¨å°ã•ã„ã§ã™ã€‚ åŗã€‚ ã‚ĩイã‚ēは4分ぎ1äģĨ下で、CVE数では大きãĒ違いがありぞす。 ぞた、Nodeã‚’åŽŸčĄŒã™ã‚‹ãŸã‚ãĢåŋ…čρãĒもぎがすずãĻæƒãŖãĻいぞす。 ベãƒŧã‚šã‚¤ãƒĄãƒŧジ、つぞりã‚ĒãƒĒジナãƒĢã¨ãƒˆãƒƒãƒ—ã‚¤ãƒĄãƒŧã‚¸ãŽå•éĄŒã¯ã€į‰šãĢã‚Ēãƒŧãƒ—ãƒŗã‚Ŋãƒŧ゚をåŋ…čĻã¨ã™ã‚‹ãƒãƒŧムãĢčĻ‹ã‚‰ã‚Œã‚‹ã“ã¨ã§ã™ã€‚ OS ãƒ‘ãƒƒã‚ąãƒŧジ マネãƒŧã‚¸ãƒŖãƒŧぎ䞝存é–ĸäŋ‚がåŋ…čρãĒため、apt と yum がåŋ…čĻã§ã™ã€‚ そしãĻ、これがおうãĒるかというと、最初ぎもぎは、たくさんぎもぎがåĢぞれãĻいるということです。 そしãĻ、最初ぎį”ģ像が抟čƒŊするようãĢãĒれば、それはうぞくいくでしょう。 しかし、SlimをäŊŋおうとすると、指厚しãĻいãĒい䞝存é–ĸäŋ‚がæŦ čŊしãĻいるため、ビãƒĢãƒ‰ãŒå¤ąæ•—ã—ã€Dockerぎ初æ—ĨぎįĩŒé¨“で、デフりãƒĢトぎNodeã‚¤ãƒĄãƒŧジãĢMercurialがåĢぞれãĻいることãĢ気ãĨかãĒã‹ãŖãŸãŸã‚ã€ImageMagickがありぞす。 通常、Nodeã‚¤ãƒĄãƒŧジãĢはåŋ…čĻãŽãĒいもぎがたくさんありぞす。 ですから、これらがそこãĢあるとき、それはすずãĻぎビãƒĢドツãƒŧãƒĢã‚’æŒãŖãĻいぞす。 ã—ãŸãŒãŖãĻ、バイナãƒĒビãƒĢãƒ‰ã‚’åŽŸčĄŒã§ããžã™ã€‚ 時ãĢはそれもåŋ…čĻã§ã™ã€‚ しかし、通常は、į‹Ŧč‡ĒãŽåŽŸčĄŒčĄŒã‚’é…įŊŽã—ãĻ、これらぎことを指厚しぞす。 åŗã€‚ だから、あãĒたはそこãĢčĻį‚šã‚’į†č§Ŗã—ãžã™ã€‚ ã§ã™ã‹ã‚‰ã€į§ã¯ãã‚Œã‚’ãŠå‹§ã‚ã—ãžã›ã‚“ã€‚ Alpine ぎもぎãĢã¯į´ æ™´ã‚‰ã—ã„ CVE ぎもぎがありぞすが、さぞざぞãĒį†į”ąãĢã‚ˆã‚Šã€é•ˇåš´ãĢã‚ãŸã‚‹į§ãŽčŦ›æŧ”ã§čžãã“ã¨ãŒã§ãã€ãƒĒポジトãƒĒだけãĢčĄŒãã¨ã€é•ˇæ‰€ã¨įŸ­æ‰€ãĢついãĻå¤šããŽčŠŗį´°ãŒč¨˜čŧ‰ã•れぞした。 ã‚ĸãƒĢãƒ‘ã‚¤ãƒŗã¯å°ã•ããĻį´ æ•ĩですが、一čˆŦįš„ãĢはお勧めしぞせん。 muslとBusyBoxぎæ‚ĒåŊąéŸŋãĒしãĢAlpineよりも小さくすることができぞす。

æŦĄã¯ã€æ¯”čŧƒãŽãŸã‚ãĢ Debian をおčĻ‹ã›ã—ãžã™ã€‚ Docker Hubからå…ŦåŧãĢ提䞛されãĻいるこれらぎノãƒŧãƒ‰ã‚¤ãƒĄãƒŧジはDebianãĢåŸēãĨいãĻいるため、これãĢį„Ļį‚šã‚’åŊ“ãĻã‚‹ã¨ã€å¤šããŽč„†åŧ࿀§ãŒãƒ™ãƒŧã‚šã‚¤ãƒĄãƒŧジãĢčĩˇå› ã—ぞす。 ノãƒŧドはそれらãĢついãĻäŊ•もできぞせん。 たとえば、 12 Slim ãĢは、より少ãĒく、数が少ãĒくãĒãŖãĻã„ãžã™ãŒã€ãã‚Œã§ã‚‚ã„ãã¤ã‹ãŽč„†åŧ࿀§ãŒã‚りぞす。 そしãĻ、あãĒたはUbuntuをčĻ‹ã‚‹ã“ã¨ãŒã§ããžã™ã€‚

ã‚Ļãƒ–ãƒŗãƒ„

ã—ãŸãŒãŖãĻ、Ubuntuã¯į§ãŽæŽ¨åĨ¨ã‚¤ãƒĄãƒŧジぎ1つãĢãĒりぞす。 すぐãĢ3つぎ推åĨ¨äē‹é …をおäŧãˆã—ぞすが、そこãĢãŸãŠã‚Šį€ããĢは旅をしãĒければãĒりぞせん。 ã—ãŸãŒãŖãĻ、äŧįĩąįš„ãĢã€ã‚ˇã‚šãƒ†ãƒ įŽĄį†č€…ã§ã‚ã‚‹į§ãŸãĄãĢã¨ãŖãĻ、UbuntuãĢついãĻč€ƒãˆã‚‹ã¨ãã€į§ãŸãĄã¯æŦĄãŽã‚ˆã†ãĒLTSãĢついãĻč€ƒãˆãžã™ 20。04 と 22.04、これらはUbuntuãŽé•ˇæœŸåŽ‰åŽšį‰ˆãƒĒãƒĒãƒŧ゚です。 ã‚ŗãƒŗãƒ†ãƒŠãƒŧ ã‚¤ãƒĄãƒŧジでは、 22.04 23.04ã€ãã‚Œã¯ãŸãŖãŸ1čĄŒãŽå¤‰æ›´ã§ã™ã€‚ そしãĻᐆčĢ–įš„ãĢは、新しい䞝存é–ĸäŋ‚が垗られぞす。 そしãĻこぎ場合、あãĒたは原際ãĢ 23ãŽč„†åŧ࿀§ãŒå°‘ãĒいことがわかりぞす。04.

ãƒ‘ãƒƒã‚ąãƒŧジマネãƒŧã‚¸ãƒŖãƒŧãŽé•ˇæœŸįš„ãĒå¯į”¨æ€§ã‚’å°‘ã—įŠ į‰˛ãĢã—ãžã™ãŒã€ãã‚Œã¯å°‘ã—é›‘č‰ãĢ埋もれãĻいぞす。 ä슿—ĨはそれãĢついãĻã¯čŠąã—ãžã›ã‚“ã€‚ ですから、あãĒたぎäŧšį¤žã§ã¯ã€Ubuntu LTSã‚¤ãƒĄãƒŧジしかäŊŋãŖãĻいãĒã„ã¨č¨€ãŖãĻいるäŧšį¤žãŒã‚るかもしれぞせん。 ぞた、AWSやAzureãŽč¤‡æ•°ãŽäŧæĨ­ã§ã¯ã€ã™ãšãĻぎベãƒŧã‚šã‚¤ãƒĄãƒŧジãĢ寞するã‚ĸプロãƒŧチとしãĻ、Ubuntuから始めãĻ、そこからį‹Ŧč‡ĒãŽã‚¤ãƒĄãƒŧã‚¸ã‚’æ§‹į¯‰ã—ãĻいることをįŸĨãŖãĻいぞす。 ããŽãŸã‚ãŽæ–šæŗ•ã‚’ã„ãã¤ã‹ã”į´šäģ‹ã—ぞす。

あãĒãŸãŒãã‚Œã‚’čĄŒã†ã“ã¨ãŒã§ãã‚‹1ã¤ãŽæ–šæŗ•ã€į‰šãĢノãƒŧドは、非常ãĢ小さãĒã‚¤ãƒĄãƒŧジであるUbuntuをäŊœã‚‹ã“とができぞすよね? Ubuntuぎ 22.04 はäģ–ぎすずãĻぎもぎよりも小さいです、 69 ãƒĄã‚Ŧ。 ぞた、垓æĨぎUbuntuã‚¨ãƒŗã‚ŋãƒŧプナイã‚ēã‚ĩポãƒŧトがįĩ„ãŋčžŧぞれãĻいるため、å„ĒれãĻいぞす。 é•ˇæœŸįš„ãĒã‚ĸプãƒĒãƒ‘ãƒƒã‚ąãƒŧジマネãƒŧã‚¸ãƒŖãƒŧぎもぎがįĩ„ãŋčžŧぞれãĻいぞす。 ã‚¤ãƒŗã‚ŋãƒŧネット上で十分ãĢã‚ĩポãƒŧトされãĻおり、十分ãĢ文書化されãĻいぞす。 ぞた、Nodeã‚Ŋãƒŧ゚をäŊŋį”¨ã—ãĻå…ŦåŧãŽNodeバイナãƒĒをčŋŊ加できぞす。 ですから、Nodeã‚Ŋãƒŧ゚ãĢį˛žé€šã—ãĻいるäēēãĒらčĒ°ã§ã‚‚ã€Nodeã‚Ŋãƒŧ゚ãĢついãĻčžã„ãŸã“ã¨ãŒã‚ã‚‹ã§ã—ã‚‡ã†ã—ã€Nodeã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢãžãŸã¯æ§‹į¯‰ã—ãŸã“ã¨ãŒã‚ã‚‹äēēãĒら、Nodeã‚Ŋãƒŧ゚ãĢついãĻįŸĨãŖãĻいるでしょう。 そぎため、こぎãƒĒポジトãƒĒãĢあるDockerfileをäŊœæˆã§ããžã™ã€‚ ã“ã‚Œã‚’æ§‹į¯‰ã™ã‚‹æ–šæŗ•ã‚’į¤ēしぞす。 そしãĻ、あãĒたはåŊŧらぎノãƒŧドã‚Ŋãƒŧã‚šã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢするだけです。 ã“ãŽæ–šæŗ•ãŽæŦ į‚šãŽ1ã¤ã¯ã€į§ãŒæ–‡åĨã‚’č¨€ãŖãŸãĢもかかわらず、Nodeã‚Ŋãƒŧ゚チãƒŧムがNodeã‚’ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢするためãĢPythonをåŋ…čĻã¨ã™ã‚‹ã“ã¨ã§ã™ã€‚ ã—ãŸãŒãŖãĻ、こぎ場合ぎNodeã‚¤ãƒĄãƒŧジãĢはPythonとそぎすずãĻぎ䞝存é–ĸäŋ‚がåĢぞれるようãĢãĒり、Nodeãƒ‘ãƒƒã‚ąãƒŧジãĢ脆åŧ࿀§ãŒã‚‚たらされぞす。 į§ã¯ãã‚ŒãŒæ°—ãĢå…ĨらãĒい。 そぎため、PythonではãĒくNodeをäŊŋį”¨ã—ãĻいぞす。 ã ã‹ã‚‰ã€į§ã¯ããŽé¸æŠžč‚ĸがåĨŊきではありぞせん。

æŦĄãŽã‚Ēãƒ—ã‚ˇãƒ§ãƒŗã¯ã€Dockerfileでcopyã‚ŗãƒžãƒŗãƒ‰ã‚’äŊŋį”¨ã—ãĻ、Nodeã‚¤ãƒĄãƒŧジからUbuntuã‚¤ãƒĄãƒŧジãĢすずãĻぎバイナãƒĒã‚’ã‚ŗãƒ”ãƒŧするだけぎã‚ĩイドロãƒŧドぎようãĒもぎです。 そしãĻäģŠã€ã‚ãĒたはaptをåŋ…čĻã¨ã—ãžã›ã‚“ã€ã‚ãĒたはそぎようãĒäŊ™åˆ†ãĒもぎをすずãĻåŋ…čĻã¨ã—ãžã›ã‚“ã€‚ あãĒたはあãĒたが望むもぎだけを手ãĢå…Ĩれぞす。 小さいį”ģ像です。 あãĒたはここで 225č¨€ã†ã“ã¨ãŒã§ããžã™ã€‚ そぎため、äģ–ぎもぎよりも゚ãƒĒムです。 ãžãŸã€č„†åŧ࿀§ãŽæ•°ã‚‚å°‘ãĒいです。 ãŠãŽã‚šã‚­ãƒŖãƒŠãƒŧãĢもéĢ˜å€¤ã‚„č‡¨į•Œå€¤ã¯ã‚ã‚Šãžã›ã‚“ã€‚ ただし、こぎã‚ĸプロãƒŧチぎæŦ į‚šãŽ 1 つは、バイナãƒĒが Snyk を除いãĻ CVE ã‚šã‚­ãƒŖãƒŠãƒŧãĢã‚ˆãŖãĻ取垗されãĒい可čƒŊæ€§ãŒã‚ã‚‹ã“ã¨ã‚’æ„å‘ŗã—ãžã™ã€‚ ええ、SnykはこれらぎバイナãƒĒを検å‡ēしぞすが、それらはaptãĢã‚ˆãŖãĻã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢされãĻおらず、ご存įŸĨãŽã¨ãŠã‚Šã€č„†åŧ࿀§ã¯ãĒã‹ãŖãŸã¨å ąå‘Šã•ã‚ŒãĻいぞす。 į§ã¯ã€Docker Scoutがいつぎæ—Ĩã‹ãã‚Œã‚’čĄŒã†ã“ã¨ã‚’æœ›ã‚“ã§ã„ãžã™ã—ã€ãã†ã™ãšãã ã¨åŊŧらãĢįŸĨらせるつもりです。 æŦĄãĢ、Ubuntuを 23 ぞたは 4ãĢį§ģ動するというã‚ĸイデã‚ĸがありぞす 、そしãĻあãĒãŸã¯ãã“ã§ã‚šã‚­ãƒŖãƒŗã§įĩæžœã‚’čĻ‹ã‚‹ã“ã¨ãŒã§ããžã™ã€‚ 23ぞたは4はUbuntuぎ䞝存é–ĸäŋ‚が22よりも新しいため、CVEは数個少ãĒくãĒりぞす。

ãƒ‡ã‚Ŗã‚šãƒˆãƒĒビãƒĨãƒŧã‚ˇãƒ§ãƒŗãƒŦ゚

そしãĻ最垌ãĢ、最垌ぎ2つはDistrolessですが、ここãĢいるあãĒたはčĒ°ã§ã™ã‹ã€DistrolesstをäŊŋį”¨ã—ãĻいるäēēはいぞすか? å‰ã‚‚ãŖãĻ1つ手ãĢå…Ĩれた。 ã—ãŸãŒãŖãĻ、DistrolessはクãƒŧãƒĢãĒã‚ĸイデã‚ĸです。 ᧁãĢã¯å•éĄŒãŒã‚ã‚Šã€å°ã•ãĒį‚šã€å°ã•ãĒ3つ、4つがčĻ‹ãˆãžã™ã€‚ これらは、これがすずãĻであるGitHubãƒĒポジトãƒĒã‚’å‚į…§ã—ãĻいぞす。 最垌ぎ゚ナイドで、最初ぎ゚ナイドãĢありぞした。 しかし、DistrolessãĢは副äŊœį”¨ãŒã‚りぞす。 å¤šããŽã‚‚ãŽã‚’ãƒ”ãƒŗį•™ã‚ã™ã‚‹ã“ã¨ã¯ã§ããžã›ã‚“ã€‚ ãã‚Œã¯į§ãŒæœ›ã‚€ã‚ˆã†ãĢ時間ぎįĩŒéŽã¨ã¨ã‚‚ãĢバãƒŧã‚¸ãƒ§ãƒŗã‚’äŋæŒã—ぞせん。 ãžãŸã€č¨­č¨ˆæ–šæŗ•ãĢより、aptãĒãŠã¯ã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢされãĻいぞせん。 つぞり、これは最įĩ‚æŽĩ階であり、æœŦčŗĒįš„ãĢé̘åēĻãĒ Dockerfile がåŋ…čĻã§ã‚ã‚Šã€ãƒ“ãƒĢド ã‚¤ãƒĄãƒŧジと、こぎ Distroless ã‚¤ãƒĄãƒŧジãĢすずãĻã‚’ã‚ŗãƒ”ãƒŧã™ã‚‹é‹į”¨ã‚¤ãƒĄãƒŧジがåŋ…čĻã§ã‚ã‚‹ã“ã¨ã‚’įŸĨãŖãĻおくåŋ…čĻãŒã‚ã‚Šãžã™ã€‚

そこで、é̘åēĻãĒã‚ŊãƒĒãƒĨãƒŧã‚ˇãƒ§ãƒŗã‚’æ¤œč¨Žã—ãžã—ãŸãŒã€ãžã č„†åŧ࿀§ãŒã‚りぞす。 原際、場合ãĢã‚ˆãŖãĻは、Ubuntuã‚ˆã‚Šã‚‚å¤šããŽč„†åŧ࿀§ãŒã‚る可čƒŊ性がありぞす。 では、DistrolessãŽãƒã‚¤ãƒŗãƒˆã¯ã€Distrolessを小さくしãĻ厉全ãĢäŋã¤ã“ã¨ã ãŖãŸãŽã§ã€ãĒぜそれをäŊŋį”¨ã™ã‚‹ãŽã§ã—ã‚‡ã†ã‹ã€‚ そしãĻ、それが常ãĢæœ€č‰¯ãŽé¸æŠžã§ã‚ã‚‹ã¨ã¯é™ã‚Šãžã›ã‚“ã€‚

チェãƒŧãƒŗã‚Ŧãƒŧド

そこãĢある新しいもぎはチェãƒŧãƒŗã‚Ŧãƒŧドです。 チェãƒŧãƒŗã‚ŦãƒŧドãĢついãĻčžã„ãŸã“ã¨ãŒã‚ã‚‹äēēはいぞすか? čĒ°ã§ã‚‚ã€‚ さãĻã€į§ãŸãĄã¯ã‚ĢップãƒĢを手ãĢå…Ĩれぞした。 つぞり、Chainguardはã‚Ŋフトã‚Ļェã‚ĸã‚ĩプナイチェãƒŧãƒŗã‚ģキãƒĨãƒĒãƒ†ã‚Ŗäŧšį¤žã§ã™ã€‚ ご存じãĒい斚ぎためãĢčĒŦæ˜Žã™ã‚‹ã¨ã€į§ã¯æ¯Žé€ąã€ã“ãŽã“ã¨ãĢついãĻYouTubeぎナイブ゚トãƒĒãƒŧãƒ ã‚’ã‚„ãŖãĻいぞす。 YouTubeãĢã‚˛ã‚šãƒˆãĢæĨãĻもらい、そこで参加しãĻもらいぞす。 į§ãŸãĄã¯æ¯Žé€ąæœ¨æ›œæ—ĨãĢナイブをしãĻいãĻ、åŽģ嚴はチェãƒŧãƒŗã‚Ŧãƒŧãƒ‰ã‚’ã‚„ãŖãĻいãĻ、とãĻも気ãĢå…Ĩりぞした。 į§ãŽæ„čĻ‹ã§ã¯ã€åŊŧらはåŸēæœŦįš„ãĢ、WolfiでäŊ•をしãĻいるかをčĒŦ明すると、Dockerぎå…Ŧåŧã‚¤ãƒĄãƒŧジを取垗し、それらをã‚ŧãƒ­ã‹ã‚‰å†č¨­č¨ˆã—ã€ãã‚Œã‚‰ã‚’č‡Ēåˆ†ãŸãĄã§äŋåŽˆã—ãĻ、全éĸįš„ãĢCVEをã‚ŧロãĢしãĻいぞす。 そしãĻ、åŊŧらはそれãĢついãĻ非常ãĢå…ŦãĢしãĻいぞす。 これらはフãƒĒãƒŧį”ģ像です。 æœ‰æ–™ãƒ—ãƒŠãƒŗãŒã‚ã‚Šã€ã“ã‚Œã‚‰ãŽį”ģ像でさらãĢã„ãã¤ã‹ãŽã“ã¨ãŒã§ããžã™ãŒã€įŽąã‹ã‚‰å‡ēしãĻすぐãĢå¤šããŽã“ã¨ã‚’į„Ąæ–™ã§å…Ĩ手できぞす。 åŊŧらはį‹Ŧč‡ĒぎãƒŦジ゚トãƒĒã‚’æŒãŖãĻいぞす。 先į™ēするチãƒŧムãĢはåŧˇããŠå‹§ã‚ã—ぞす。

ã“ã‚Œã¯ã€ãƒŠãƒŗãƒãƒŧãƒ¯ãƒŗã§ã¯ãĒいãĢしãĻã‚‚ã€į§ãŒåŊŧらãĢäŊŋおうとしãĻã„ã‚‹į§ãŽãƒˆãƒƒãƒ—3ぎį”ģ像ぎ1つです。 å°‘ã—ä¸Šį´šč€…ã§ã™ã€‚ これらぎį”ģ像がこぎようãĢ非常ãĢ小さくãĒã‚‹ã¨ã€ã‚ˇã‚§ãƒĢがãĒã„ãŽã§ã€å°‘ã—į†č§Ŗã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã‚ˆã­? åŋ…čρãĒãƒ‘ãƒƒã‚ąãƒŧジがすずãĻæƒãŖãĻいるとは限りぞせん。 だから、あãĒた、あãĒãŸã€ãã‚Œã¯å°‘ã—é›Ŗã—ããĒりぞす。 それで、こぎ゚ナイドãĢãŸãŠã‚Šį€ããžã™ã€‚ これらはä¸ģãĒ推åĨ¨äē‹é …です。 順不同です。 åŊŧらはあãĒたぎチãƒŧムとåŊŧらがåŋ…čĻã¨ã™ã‚‹ã‹ã‚‚ã—ã‚ŒãĒいもぎãĢ䞝存しãĻいぞす。

ã§ã™ã‹ã‚‰ã€įŽąã‹ã‚‰å‡ēしãĻすぐãĢäŊŋãˆã‚‹į°Ąå˜ãĒå…Ŧåŧã‚¤ãƒĄãƒŧジをäŊŋいたいãĒら、それはNode-slimですよね? SnykとDocker ScoutãĢã‚ˆã‚‹ã¨ã€įžåœ¨ã€é‡å¤§ãĒ脆åŧ࿀§ã‚„éĢ˜ã„č„†åŧ࿀§ã¯ã‚りぞせん。 ã—ãŸãŒãŖãĻ、äŊŽã¨ä¸­ãŽãŋです。 最初ãĢåŽšįžŠã—ãĻおくずきでした。 すãŋぞせん。 ã‚Ļェブã‚ĩã‚¤ãƒˆã§åŽšįžŠã•ã‚ŒãĻいぞす。 į”ŗã—č¨ŗãĒいです。 そしãĻ、2į•Ēį›ŽãŽį”ģ像は、ã‚ĩイドロãƒŧドしたį”ģ像です。 そしãĻ、それがおぎようãĢčĻ‹ãˆã‚‹ã‹ã‚’įĸēčĒã—ãŸã„å ´åˆã¯ã€éžå¸¸ãĢį°Ąå˜ã§ã™ã€‚ ãã‚ŒãŒæ­Ŗã—ã„į”¨čĒžã‹ãŠã†ã‹ã¯ã‚ã‹ã‚Šãžã›ã‚“ãŒã€į§ã¯ããŽį”¨čĒžãŽã‚ĩイドロãƒŧドをäŊœã‚Šä¸Šã’ãĻいぞす。 ã ã‹ã‚‰ã€ã‚ŗãƒ”ãƒŧをčĻ‹ã‚Œã°ã€‚ ã—ãŸãŒãŖãĻã€ã“ãŽãƒ•ã‚Ąã‚¤ãƒĢでは、これがノãƒŧドをこれãĢå…Ĩã‚Œã‚‹æ–šæŗ•ã§ã™ã€‚ これは通常ぎUbuntuã‚¤ãƒĄãƒŧジです。 そしãĻã€į§ãŒããŽä¸­ãĢノãƒŧãƒ‰ã‚’å–åž—ã™ã‚‹æ–šæŗ•ã¯ã€ã‚ŗãƒ”ãƒŧをäŊŋį”¨ã™ã‚‹ã“ã¨ã§ã™ã€‚ そしãĻã€ã“ã‚Œã¯ã€č¤‡æ•°ãŽãƒãƒŧムがäģ–ぎã‚ŋイプぎį”ģ像ãĢ寞しãĻã“ã‚Œã‚’čĄŒãŖãĻã„ã‚‹ãŽã‚’į›ŽãĢã™ã‚‹æ­ŖåŊ“ãĒæ–šæŗ•ã§ã™ã€‚

ãã“ã§ã€ä¸Ąæ–šãŽį”ģ像を一į•Ē上ãĢåŽšįžŠã—ãžã™ã€‚ ã“ã‚ŒãŒį§ãŽNodeã‚¤ãƒĄãƒŧジです。 そしãĻã€ã“ã‚ŒãŒį§ãŒčĄŒãäēˆåŽšãŽUbuntuã‚¤ãƒĄãƒŧジです、ご存įŸĨぎとおり、垌でノãƒŧドをäŊŋį”¨ã—ãžã™ãŒã€ãƒãƒŧã‚¸ãƒ§ãƒŗã‚’čŋŊčˇĄã§ãã‚‹ã‚ˆã†ãĢ、上部でそれらすずãĻをčĻ‹ã¤ã‘ãŸã‹ãŖãŸãŽã§ã™ã€‚ į§ã¯ã“ã‚Œã‚‰ã‚’SHAãƒãƒƒã‚ˇãƒĨしãĻã€æ¯Žå›žããŽæ­ŖįĸēãĒį”ģ像を取垗することをäŋč¨ŧã™ã‚‹ãƒãƒƒã‚ˇãƒĨを持つåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ そしãĻã€į§ã¯åŊŧらãĢエイãƒĒã‚ĸ゚を与えãĻいぞす。 そしãĻ、ここで「tini」ãĢついãĻå°‘ã—ãŠčŠąã—ã—ãžã™ã€‚ しかし、ここでは、あるį”ģ像からåˆĨぎį”ģ像ãĢノãƒŧãƒ‰ã‚’ã‚ŗãƒ”ãƒŧしãĻã‚ĩイドロãƒŧãƒ‡ã‚Ŗãƒŗã‚°ã—ãĻいぞす。 æ­Ŗã—ã„Nodeバãƒŧã‚¸ãƒ§ãƒŗã‚’æ§‹į¯‰ã™ã‚‹ãŸã‚ãŽå…ŦåŧãŽNodeã‚¤ãƒĄãƒŧジをäŋĄé ŧしãĻいるからです。 ぞた、Docker Hubから取垗したNodeぎバãƒŧã‚¸ãƒ§ãƒŗã‚’æŒ‡åŽšã§ãã‚‹ãŸã‚ã€å–åž—ã—ãĻいるバイナãƒĒã‚’æ­ŖįĸēãĢæŠŠæĄã§ããžã™ã€‚ ノãƒŧドã‚Ŋãƒŧ゚やPythonがロãƒŧドされたり、原際ãĢはåŋ…čĻãŽãĒいaptãƒ‘ãƒƒã‚ąãƒŧジぎ䞝存é–ĸäŋ‚ぎ副äŊœį”¨ãĒしãĢ、ここãĢそれらをå…Ĩれるåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ そしãĻã€į§ã¯ã“ã‚Œã‚’æœŦį•Ēį’°åĸƒã§ãƒ†ã‚šãƒˆã—ぞした。 これは4åš´ãģお前からå‡ēしãĻいる䞋ですが、äģŠãŽã¨ã“ろæ‚ĒåŊąéŸŋはありぞせん。 というわけです。

ã—ãŸãŒãŖãĻ、これら3つぎã‚Ēãƒ—ã‚ˇãƒ§ãƒŗã¯ã‚ãĒたぎためです。 そしãĻ、一į•Ē下ãĢチェãƒŧãƒŗã‚Ŧãƒŧドがå…ĨãŖãĻぞすよね? そぎため、Node-latest ã‚¤ãƒĄãƒŧジです。 ChainguardãĢバãƒŧã‚¸ãƒ§ãƒŗã‚’å›ēåŽšã—ãŸã„å ´åˆã¯ã€æˆåŠŸįŽ‡ãŒéĢ˜ãžãŖãŸãŸã‚ã€æœ€čŋ‘ポãƒĒã‚ˇãƒŧを変更しぞした。 ぞた、ã‚ŋグãĢå›ē厚されたバãƒŧã‚¸ãƒ§ãƒŗãŒåŋ…čρãĒå ´åˆã¯ã€æœ‰æ–™ãƒ—ãƒŠãƒŗãŽ1つãĢ送äŋĄã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ ã—ã‹ã—ã€į§ãŒæŽ¨åĨ¨ã—ãĻいるようãĢ、いつでもSHAãƒãƒƒã‚ˇãƒĨをå›ē厚できぞす。 そしãĻ、åŊŧらは常ãĢそれらぎSHAãƒãƒƒã‚ˇãƒĨã‚’åˆŠį”¨å¯čƒŊãĢし、あãĒたはそれらãĢé ŧることができるぎで、それはæœŦčŗĒįš„ãĢあãĒたãĢ同じもぎを与えãĻいぞす。

プロã‚ģã‚šįŽĄį†

æŦĄãĢ進ãŋぞしょう。 よし、プロã‚ģã‚šįŽĄį†ã ã€‚ ここãĢいるäŊ•äēēぎäēēがinitプロã‚ģ゚ãĢついãĻįŸĨãŖãĻいるか、tiniぞたはNodeでこれらぎもぎをäŊŋį”¨ã—ãĻいぞすか? äŊ•äēēかいぞすか? ぞぁ、半分くらいぎäēēだね。 すごい。 だからあãĒãŸã¯ã“ãŽå•éĄŒãĢついãĻįŸĨãŖãĻいぞす。 そしãĻã€į§ã‚‚æ„čĻ‹ã‚’æŒãŖãĻいぞす。 そぎため、DockerとSwarm、そしãĻKubernetesぎNodeプロã‚ģã‚šã‚’įŽĄį†ã™ã‚‹ãŸã‚ãĢ、チãƒŧムとäŊ•åš´ã‚‚ä¸€įˇ’ãĢ働きぞした。 そしãĻ、initãŽå•éĄŒã‚’į†č§Ŗã—ã‚ˆã†ã¨ã—ã€ãƒ—ãƒ­ã‚ģã‚šã‚’ã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚Ļãƒŗã—ãžã™ã€‚ そしãĻ、åŸēæœŦįš„ãĢダã‚Ļãƒŗã‚ŋイムはã‚ŧロでデプロイされ、æŽĨįļšã‚’čĻ‹é€ƒã™ã“ã¨ã¯ãĒく、åŸēæœŦįš„ãĢHTTP pingをčĻ‹é€ƒã™ã“ã¨ã‚‚ãĒã„ãŸã‚ã€ã‚ˇã‚°ãƒŠãƒĢぎã‚Ļã‚ĩã‚ŽãŽįŠ´ãĢčŊãĄã€initプロã‚ģ゚が原際ãĢäŊ•をしãĻã„ã‚‹ãŽã‹ã€ã‚žãƒŗãƒ“ãŽåˆˆã‚Šå–ã‚ŠãŒåŽŸéš›ãĢé‡Žį”Ÿã§ãŠãŽã‚ˆã†ãĢčĻ‹ãˆã‚‹ãŽã‹ã€NodeãĢã¯ã“ã‚Œã‚‰ãŽå•éĄŒã•ãˆã‚ã‚‹ãŽã§ã—ã‚‡ã†ã‹ã€‚

そこで、゚ナイドを思いつきぞした — ä슿—Ĩは、こぎ非常ãĢ複雑ãĒæąē厚木をäŊœã‚‹ã“とãĢãĒり、2つぎčŗĒ問でおåŊšãĢįĢ‹ãĻることãĢ気ãĨきぞした。 これがåŋ…čĻã‹ãŠã†ã‹ã¯æ•™ãˆãĻあげることができぞした。 そしãĻ1ã¤į›Žã¯ã€ãģã¨ã‚“ãŠãŽå ´åˆã€ã‚ŗãƒŗãƒ†ãƒŠã§Nodeをčĩˇå‹•するもぎとしãĻtiniをčŋŊ加することです。 だからnpmではありぞせん。 tiniはDockerãĢįĩ„ãŋčžŧぞれãĻã„ã‚‹ãŸã‚ã€į§ã¯tiniをåĨŊãŋぞす。 ã‚ĸプãƒĒではã‚ĩブプロã‚ģ゚がäŊœæˆã•れぞせんが、多くぎノãƒŧド ã‚ĸプãƒĒではäŊœæˆã•れぞせん。 ãƒ•ã‚Ąã‚¤ãƒĢã‚ˇã‚šãƒ†ãƒ ã¸ãŽå‘ŧãŗå‡ēã—ã‚’čĄŒã†å ´åˆã‚‚ã‚ã‚Šãžã™ãŒã€åŋ…ãšã—ã‚‚ãƒžã‚ˇãƒŗä¸Šã§ curl やそぎäģ–ぎバイナãƒĒã‚’į”Ÿæˆã™ã‚‹ã¨ã¯é™ã‚Šãžã›ã‚“ã€‚ ぞたは、æœŦį•Ēį’°åĸƒãŽKubernetesをäŊŋį”¨ã—ãĻいる場合、こぎã‚Ēãƒ—ã‚ˇãƒ§ãƒŗãĢついãĻįŸĨらãĒã‹ãŖãŸå ´åˆã¯ã€æŽ‹åŋĩãĒがらデフりãƒĢトではã‚ĒãƒŗãĢãĒãŖãĻã„ãžã›ã‚“ãŒã€å…ąæœ‰ãƒ—ãƒ­ã‚ģ゚名前įŠē間をã‚ĒãƒŗãĢできぞす。 そうすれば、KubernetesãĢは一時停æ­ĸã‚ŗãƒŗãƒ†ãƒŠã¨ã„ã†åˇ§åĻ™ãĒトãƒĒックがありぞす — 一時停æ­ĸã‚ŗãƒŗãƒ†ãƒŠãĢついãĻčĒ°ãŒįŸĨãŖãĻいぞすか?

ã‚ŗãƒŗãƒ†ãƒŠãŽä¸€æ™‚åœæ­ĸ

そぎため、一時停æ­ĸã‚ŗãƒŗãƒ†ãƒŠã¯ã€ã™ãšãĻぎKubernetesポッドで最初ãĢäŊŋį”¨ã•ã‚Œãžã™ã€‚ それは常ãĢそこãĢありぞす。 čļ…小型です。 100čĄŒã¨ã‹ 50 čĄŒã¨ã‹ãŽã‚ŗãƒŧドとか。 そしãĻ、それはあãĒたがåŋ…čĻã¨ã™ã‚‹ã‚žãƒŗãƒ“ãŽåˆˆã‚Šå–ã‚Šã¨äŋč­ˇã¨äŋĄåˇå‡Ļį†ã‚’čĄŒã„ãžã™ã€‚ それはあãĒたぎためãĢãã‚Œã‚’čĄŒã„ãžã™ãŒã€ãã‚Œã¯ãƒãƒƒãƒ‰å†…ãŽæŽ‹ã‚ŠãŽã‚ŗãƒŗãƒ†ãƒŠã¨ã—ãĻプロã‚ģ゚と名前įŠēé–“ã‚’å…ąæœ‰ã—ãĻいる場合ãĢ限りぞす(掋åŋĩãĒがら、Kubernetes 112 かäŊ•かぎようãĢ、デフりãƒĢãƒˆã§ã¯čĄŒã‚ãĒいことãĢæąēめぞした。 ã—ãŸãŒãŖãĻ、KubernetesでこれをtrueãĢč¨­åŽšã™ã‚‹ã¨ã€ãƒãƒƒãƒ‰å†…ãŽã™ãšãĻãŽã‚ŗãƒŗãƒ†ãƒŠãŒåŒã˜åå‰įŠē間ãĢãĒり、åŸēæœŦįš„ãĢKubernetesはpauseとå‘ŧã°ã‚Œã‚‹į„Ąæ–™ãŽinitマネãƒŧã‚¸ãƒŖãƒŧを提䞛しぞす。 ã—ãŸãŒãŖãĻ、そぎ場合はtiniはåŋ…čĻã‚ã‚Šãžã›ã‚“ã€‚ あãĒたはそれをéŋけることができぞす。

もう 1 ã¤ãŽã‚ąãƒŧ゚は、ã‚ĸプãƒĒãŒã‚ŗãƒŧãƒ‰å†…ãŽã‚ˇã‚°ãƒŠãƒĢをãƒĒãƒƒã‚šãƒŗã™ã‚‹å ´åˆã§ã€ããŽæ–šæŗ•ãĢついãĻčŗĒå•ãŒã‚ã‚‹å ´åˆã¯ã€ã‚ŗãƒŧド䞋と HTTP でぎæŽĨįļšãŽã‚Ģã‚ĻãƒŗãƒˆãĢついãĻčĒŦ明したäģĨ前ぎčŦ›æŧ”へぎãƒĒãƒŗã‚¯ãŒã‚ã‚Šãžã™ã€‚ ですから、もしあãĒたがネットワãƒŧã‚­ãƒŗã‚°ã‚„ã‚Ēã‚ŋã‚¯įš„ãĒもぎãĢčˆˆå‘ŗã‚’æŒã¤ãĒら、そぎビデã‚ĒをæŽĸしãĢčĄŒããŸã‚ãŽãƒĒãƒŗã‚¯ã‚’æœ€åžŒãĢãŠæ¸Ąã—ã—ãžã™ã€‚ しかし、ä슿—ĨはそぎすずãĻをįĩŒé¨“することはできぞせん。 ã—ã‹ã—ã€ã“ã‚Œã‚‰ãŽä¸Ąæ–šãŒæœŦåŊ“ãĒら、tiniはåŋ…čĻã‚ã‚Šãžã›ã‚“ã€‚ そしãĻ、あãĒたはč‡Ē分č‡ĒčēĢを救うことができぞす、æœŦåŊ“ãĢéĸ倒ではありぞせんが、あãĒたは不åŋ…čρãĒã‚Ģプã‚ģãƒĢ化をéŋけることができぞす。

ですから、äģ–ぎãŋんãĒぎためãĢã€į§ãŸãĄã¯tiniã‚’æŒãŖãĻいるずきです。 そこãĢãƒ†ã‚Ŗãƒŧニをå…Ĩれるずきです。 そしãĻ、あãĒたはそれをここãĢįŊŽã„ãĻおくずきではありぞせん。 ぞた、exec プロãƒŧブやヘãƒĢ゚チェックでもäŊŋį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ 原際ãĢãƒ•ã‚Ąã‚¤ãƒĢã‚ˇã‚šãƒ†ãƒ ã‚’å‘ŧãŗå‡ēす場合は、そこでもそれをäŊŋį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ これは原際ãĢ 2019 ã‹ã‚‰ãŽčŠąã§ã™ã€‚ プロã‚ģã‚šįŽĄį†ã‚„äŋĄåˇå‡ĻᐆãĢé–ĸしãĻは、äģŠã§ã‚‚すずãĻé–ĸé€Ŗã—ãĻいぞす。 個äēēįš„ãĢは、これらすずãĻをNodeã‚ĸプãƒĒãĢ書きčžŧむぎがåĨŊきです。

そぎため、Nodeã‚ĸプãƒĒãĢã¯ã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚ĻãƒŗäŋĄåˇãŒčĄ¨į¤ēされぞす。 これが抟čƒŊするかおうかをįŸĨã‚‹æ–šæŗ•ã¯ã€Dockerではこぎ値が10でKubernetesが30į§’ã§ã‚ã‚‹ãŸã‚ã€Nodeã‚ŗãƒŗãƒ†ãƒŠã‚’åœæ­ĸしようとしãĻ10į§’ã‹ã‹ã‚‹å ´åˆã§ã™ã€‚ãŸã ã—ã€ 10 į§’äģĨ上かかる場合は、initãĢå•éĄŒãŒã‚ã‚Šãžã™ã€‚ そしãĻ、äŊ•がčĩˇã“ãŖãĻいるかというと、NodeはLinuxからぎäŋĄåˇã‚’čĒč­˜ã—ãĻおらず、ã‚ĢãƒŧネãƒĢはäģŠã™ãã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚Ļãƒŗã™ã‚‹åŋ…čĻãŒã‚ã‚‹ã¨č¨€ãŖãĻいぞす。 そしãĻ、NodeはデフりãƒĢトで、これはPythonやäģ–ãŽå¤šããŽãƒ—ãƒ­ã‚°ãƒŠãƒŸãƒŗã‚°č¨€čĒžãĢもåŊ“ãĻはぞるため、デフりãƒĢãƒˆã§ã¯ã“ã‚Œã‚‰ãŽã‚ˇã‚°ãƒŠãƒĢをトナップしぞせん。 そぎため、åŊŧã‚‰ã¯ãã‚Œã‚’į„ĄčĻ–ã—ã€Dockerはそれをåŧˇåˆļįĩ‚äē†ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ これが 10į§’ãŽåž…ãĄæ™‚é–“ã§ã™ã€‚ ですから、Nodeã‚ĸプãƒĒぎã‚ĩãƒŗãƒ—ãƒĢぎã‚ĒãƒŗãƒŠã‚¤ãƒŗãƒ‡ãƒĸã‚’ãŸãã•ã‚“ã‚„ãŖãĻいると、CやDockerぎ停æ­ĸãĒおをåˆļåžĄã—ãĻも、 10 į§’é–“ã ã‘ãã“ãĢあることãĢ気äģ˜ãã§ã—ょう。 それは、äŋĄåˇã‚’čžã„ãĻいãĒいからです。 これらはすずãĻinitでäŋŽæ­Ŗã§ããžã™ã€‚

Compose ぎ更新

更新をäŊœæˆã—ぞす。 į§ãŽãŠæ°—ãĢå…Ĩりぎ開į™ēč€…ãƒ„ãƒŧãƒĢである compose ãĢついãĻčŠąã—ãžã—ã‚‡ã†ã€‚ ここ3、4嚴で変化がありぞした。 そぎため、äģĨ前ぎäģŽæƒŗ DockerCon ãĢ参加したことがãĒい場合は、これらぎ変更すずãĻãĢ気ãĨいãĻいãĒい可čƒŊ性がありぞす。

ãã“ã§ã€å¤‰æ›´į‚šãŽį°Ąå˜ãĒäž‹ã‚’ã„ãã¤ã‹į´šäģ‹ã—ぞす。 バãƒŧã‚¸ãƒ§ãƒŗã¯ã‚ã‚Šãžã›ã‚“ã€‚ ã¨ãŠãŖã—ã‚ƒã„ãžã—ãŸã€‚ わãƒŧい、SwarmでãĒい限り。 あãĒたがぞだSwarmãĢいるãĒã‚‰ã€ãã‚Œã¯į´ æ™´ã‚‰ã—ã„ã“ã¨ã§ã™ã€‚ Swarmãƒ•ã‚ĄãƒŗãŽã‚ŗãƒŸãƒĨãƒ‹ãƒ†ã‚Ŗã¯åĸ—えįļšã‘ãĻおり、明æ—Ĩ、åģŠä¸‹ãŽãƒˆãƒŠãƒƒã‚¯ã§åŽŸéš›ãĢäŧšã†äēˆåŽšã§ã™ã€‚ Swarmでは、 v3、ぞだ古いバãƒŧã‚¸ãƒ§ãƒŗãŽComposeä앿§˜ä¸ŠãĢã‚ã‚‹ã‹ã€æŠ€čĄ“įš„ãĢはäŊŋį”¨ã•ã‚ŒãĻいãĒいため、vがåŋ…čĻã§ã™ã€‚ しかし、それäģĨ外ぎäēēãĢã¨ãŖãĻは、それを取り除くことができ、過åŽģ 10 嚴間ぎ Compose ã§ä¸€įˇ’ãĢäŊŋį”¨ã§ããĒã‹ãŖãŸå¤šããŽæŠŸčƒŊを手ãĢå…Ĩれることができぞした。 しばらくおäģ˜ãåˆã„いただいãĻいる斚ãĒら、v2ぎ抟čƒŊがv3ãĢå…ĨらãĒã‹ãŖãŸãŸã‚ã€v2 と v3をæąē厚しãĒければãĒらãĒいæ—ĨãŒã‚ãŖãŸã“ã¨ã‚’ã”å­˜įŸĨでしょう。それで、道ãĢåˆ†å˛į‚šãŒã‚ã‚Šãžã—ãŸã€‚ å°‘ã—č¤‡é›‘ã§ã—ãŸã€‚

äģŠã€į§ãŸãĄãŒv2 ã§æŒãŖãĻいたすずãĻぎ抟čƒŊと、v3 ã§æŒãŖãĻいたすずãĻぎ抟čƒŊがすずãĻ、嚸せãĒåŽļ族としãĻå†ãŗä¸€įˇ’ãĢãĒりぞした。 そしãĻã€į§ãŒä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいる多くぎチãƒŧムがäŊŋį”¨ã—ãĻおらず、įŸĨらãĒã‹ãŖãŸį§ãŽãŠæ°—ãĢå…Ĩりぎ1つは、...äēē々は「depends_on」ãĢついãĻčžã„ãŸã“ã¨ãŒã‚ã‚Šãžã™ãŒã€ãã‚ŒãŒæœŦåŊ“ãĢåŊŧã‚‰ãŒæ€ãŖãĻいたことをしãĻいãĒいことãĢ気ãĨきぞす。 Nodeã‚ĸプãƒĒがčĩˇå‹•する前ãĢ、デãƒŧã‚ŋベãƒŧ゚ぎ゚キãƒŧマがčĒ­ãŋčžŧãžã‚Œã‚‹ãŽã‚’åž…ãĄãŸã‹ãŖãŸãŽã§ã™ã€‚ ぞあ、あãĒãŸã¯ãã‚Œã‚’čĄŒã†ã“ã¨ãŒã§ããžã™ã€‚ あãĒãŸã¯ãã‚Œã‚’čĄŒã†ãŸã‚ãĢã“ãŽį‰šåŽšãŽæ–šæŗ•ã‚’äŊŋį”¨ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ 「depends_on」をå…Ĩ力し、デãƒŧã‚ŋベãƒŧ゚ãĒお、䞝存するã‚ĩãƒŧãƒ“ã‚šã‚’åŽšįžŠã—ãžã™ã€‚ そしãĻ、あãĒたはåĨåēˇãĒã‚ĩãƒŧビ゚ぎįŠļæ…‹ã‚’č¨€ã„ãžã™ã€‚

そしãĻ、そぎæœŦåŊ“ぎクイックぎYAMLãƒ•ã‚Ąã‚¤ãƒĢをおčĻ‹ã›ã—ãžã™ã€‚ だから、あãĒãŸã¯į§ãŒäŊ•ã‚’čĻ‹ãĻいるぎかįŸĨãŖãĻいぞす。 そしãĻã€ã“ã‚ŒãŒį§ãŽNodeã‚ĸプãƒĒぎためãĢį§ãŒčĄŒã†ã“ã¨ã§ã™ã€‚ į§ã¯DBを「depends_ã€ã¨č¨€ã„ãžã™ã€‚ æĄäģļã¯æ­Ŗå¸¸ã§ã‚ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ だからあãĒãŸã¯ã“ã‚Œã‚’čĄŒã†ã“ã¨ãŒã§ããžã™ã€‚ 30ã¤ãŽį•°ãĒるマイクロã‚ĩãƒŧビ゚をåĢむ Compose ãƒ•ã‚Ąã‚¤ãƒĢをčĻ‹ãĻããžã—ãŸã€‚ãžãŸã€æ–°ã—ã„ãƒ—ãƒ­ãƒ•ã‚Ąã‚¤ãƒĢ抟čƒŊをäŊŋį”¨ã—ãĻ、原際ãĢãã‚Œã‚‰ã‚’ãƒãƒŖãƒŗã‚¯ãĢæ ŧį´ã—ã€åˆĨ々ぎ時間ãĢčĒ­ãŋčžŧむことができぞす。 そしãĻ、それらはRedisとPostgres、そしãĻãƒãƒƒã‚¯ã‚¨ãƒŗãƒ‰ãƒ¯ãƒŧã‚ĢãƒŧãĢ䞝存しãĻいぞす。 そしãĻ、これらすずãĻが最初ãĢåŽŸčĄŒã•ã‚ŒãĒければãĒりぞせん。 そぎため、äģ–ぎäŊ•かãĢ䞝存するすずãĻぎã‚ĩãƒŧビ゚ãĢそれをčŋŊ加しぞす。 æŦĄãĢ、䞝存ã‚ĩãƒŧãƒ“ã‚šã§ã€æ­Ŗå¸¸æ€§ãƒã‚§ãƒƒã‚¯ã‚’čŋŊ加しぞす。

ぞた、デãƒŧã‚ŋベãƒŧ゚では、PostgresぎヘãƒĢã‚šãƒã‚§ãƒƒã‚¯ã‚’čĄŒã†ã ã‘ã§ã€ã“ã‚Œã¯åŽŸéš›ãĢは非常ãĢį°Ąå˜ãĒもぎです。 į§ã¯åŽŸéš›ãĢここãĢå…Ĩることができぞす。 ぞた、SQL クエãƒĒã‚’åŽŸčĄŒã—ã€į‰šåŽšãŽãƒŦã‚ŗãƒŧドを検į´ĸしぞす。 そぎため、デãƒŧã‚ŋベãƒŧã‚šã‚’ã‚ˇãƒŧドしたことがわかりぞす。 ã¤ãžã‚Šã€ã“ã‚Œã¯å˜į´”ãĒDockerヘãƒĢ゚チェックです。 ご存じぎとおり、Kubernetesã§čĄŒã†ãŽã¨åŒã˜į¨ŽéĄžãŽãƒ˜ãƒĢ゚チェックです。 そしãĻ、デãƒŧã‚ŋベãƒŧ゚やRedisãĒãŠã€ãƒãƒƒã‚¯ã‚¨ãƒŗãƒ‰ãĢそれがある限り、Dockerを構成すると、そこãĢåē§ãŖãĻ、ヘãƒĢã‚šãƒã‚§ãƒƒã‚¯ãŒįˇ‘č‰˛ãĢãĒã‚‹ãžã§åž…ãŖãĻからã‚ĩãƒŧビ゚を開始しぞす。 そしãĻã€ã“ã‚Œã‚‰ã‚’é€ŖéŽ–ã•ã›ã‚‹ã“ã¨ãŒã§ããžã™ã€‚ ããŽãŸã‚ã€ãƒãƒƒã‚¯ã‚¨ãƒŗãƒ‰ API がデãƒŧã‚ŋベãƒŧã‚šã‚’åž…æŠŸã—ã€ãƒ•ãƒ­ãƒŗãƒˆã‚¨ãƒŗãƒ‰ãŒ API を垅抟するようãĢすることができぞす。 ã“ã‚Œã‚‰ã‚’ä¸Šãžã§é€ŖéŽ–ã•ã›ã‚‹ã“ã¨ãŒã§ããžã™ã€‚ そしãĻ、それをすずãĻå…ĨれるぎはYAMLぎ 10 čĄŒã§ã™ã€‚ そぎため、最新バãƒŧã‚¸ãƒ§ãƒŗã§ãã‚Œã‚’å–åž—ã—ãĻいぞす。

æŦĄã¯ã€æ‹ĄåŧĩとCLIぎã‚Ēãƒŧバãƒŧナイドです。 įš†ã•ã‚“ãŒäŊœæˆäŊœæĨ­ã‚’ã‚šã‚ąãƒŧãƒĢã‚ĸップしたかおうかはわかりぞせんが、includesは、äŊœæˆãƒ•ã‚Ąã‚¤ãƒĢぎ先頭やおこãĢã§ã‚‚čĄ¨į¤ēã§ãã‚‹ãžãŖãŸãæ–°ã—ã„æŠŸčƒŊです。 äŊœæˆãƒ•ã‚Ąã‚¤ãƒĢぎãƒĢãƒŧトãĢ配įŊŽã—ぞす。 äģ–ãĢã‚‚æŒãĄčžŧんでãģã—ã„ãƒ•ã‚Ąã‚¤ãƒĢがありぞす。 Extendsはもう少し柔čģŸã§ã€į§ã¯ãã‚ŒãŒåĨŊãã§ã™ã€‚ã“ã‚Œã¯ã€į§ãŸãĄãŒé•ˇã„é–“æŒãŖãĻいた非常ãĢよくäŧŧた抟čƒŊです。 そしãĻ、CLIã‚Ēãƒŧバãƒŧナイドは、チãƒŧム全äŊ“ãĢäŊœæˆãƒ•ã‚Ąã‚¤ãƒĢã‚’æäž›ã§ãã‚‹ãŸã‚ã€æ­Ŗį›´ãĒã¨ã“ã‚ã€į§ãŒæœ€ã‚‚ã‚ˆãäŊŋį”¨ã™ã‚‹ã‚‚ãŽã§ã™ã€‚ そしãĻ、それらはすずãĻ、compose override.yaml というåˆĨãŽãƒ•ã‚Ąã‚¤ãƒĢをäŊœæˆã§ããžã™ã€‚ そしãĻã€ããŽãƒ•ã‚Ąã‚¤ãƒĢは、開į™ēã‚ģットã‚ĸãƒƒãƒ—ãŽį’°åĸƒå¤‰æ•°ã‚’åĢむすずãĻãŽč¨­åŽšã‚’å¤‰æ›´ã—ãžã™ã€‚ ã—ãŸãŒãŖãĻã€į•°ãĒるポãƒŧトがåŋ…čρãĒå ´åˆã‚„ã€į•°ãĒã‚‹į’°åĸƒå¤‰æ•°ãžãŸã¯į•°ãĒるパ゚ワãƒŧドがåŋ…čρãĒ場合。 そしãĻã€ããŽãƒ•ã‚Ąã‚¤ãƒĢã‚’į„ĄčĻ–ã—ãĻį„ĄčĻ–ã—ã€åˆĨãŽåˆæˆãƒ•ã‚Ąã‚¤ãƒĢをåŋ…čĻã¨ã›ãšãĢ、čĒ°ã‚‚ãŒį‹Ŧč‡Ēぎã‚Ģ゚ã‚ŋムã‚ģットã‚ĸップを持つようãĢしぞす。

CI テ゚トãĒおぎã‚ĒãƒŧバãƒŧãƒŠã‚¤ãƒ‰ã‚’čĄŒã†ã“ã¨ã‚‚ã§ããžã™ã€‚ããŽãŸã‚ã€ã™ãšãĻぎCIテ゚ト値をå…Ĩれるã‚ĒãƒŧバãƒŧãƒŠã‚¤ãƒ‰ã‚’čĄŒã†ã“ã¨ãŒã§ããžã™ã€‚ãžãŸã€ã‚ˇãƒŗãƒ—ãƒĢãĒåŸēæœŦぎ通常ぎäŊœæˆãƒ•ã‚Ąã‚¤ãƒĢをäŊœæˆã—、ã‚Ģ゚ã‚ŋマイã‚ēをã‚Ēãƒŧバãƒŧナイドすることができぞす (これをã‚Ēãƒŧバãƒŧナイドとå‘ŧãŗãžã™)ã€‚ã—ãŸãŒãŖãĻ、ドキãƒĨãƒĄãƒŗãƒˆã§ã“ã‚Œã‚‰ã™ãšãĻをčĒŋãšã‚‹ã“ã¨ãŒã§ããžã™ã€‚åŽŸéš›ã€į§ã¯1つをクãƒĒックしãĻãã‚Œã‚’čĄ¨į¤ēするつもりでしたが、čĻį‚šã¯ã‚ã‹ã‚Šãžã™ã€‚æœ€čŋ‘ã€ãƒ–ãƒ­ã‚°č¨˜äē‹ã‚’æŽ˛čŧ‰ã—ぞした。Nicholasは、 DockeräŊœæˆãŽæ”šå–„ãĢé–ĸã™ã‚‹į´ æ™´ã‚‰ã—ã„ãƒ–ãƒ­ã‚°æŠ•į¨ŋを投į¨ŋしぞした。1 つぎäŊœæˆã‚ģットã‚ĸップãĢįĩ„ãŋčžŧぞれるさぞざぞãĒ YAML ãƒ•ã‚Ąã‚¤ãƒĢをäŊœæˆã™ã‚‹ã•ぞざぞãĒæ–šæŗ•ã‚’ã™ãšãĻčĒŦ明しぞす。そしãĻ、これは、すずãĻãŽæ–šæŗ•ã€ãã‚Œãžã‚ŒãŽé•ˇæ‰€ã¨įŸ­æ‰€ã€ãã—ãĻãŠãĄã‚‰ã‹ã‚’äģ–æ–šã‚ˆã‚Šã‚‚äŊŋį”¨ã—ãŸã„į†į”ąãĢついãĻぎ非常ãĢå„Ēれたã‚Ļりãƒŧク゚ãƒĢãƒŧです。

æŦĄã¯ã€‚ 開į™ē、åŊŧらはåŸēčĒŋčŦ›æŧ”でこれをį¤ēしぞしたか? 思いå‡ēせぞせん。 つぞり、開į™ēã¯æ™‚č¨ˆãĢã¨ãŖãĻãžãŖãŸãæ–°ã—ã„ã‚‚ãŽãĒぎです。 æ™‚č¨ˆãĢついãĻは垌ãģおčĒŦ明しぞす。 æ™‚č¨ˆã¯äģŠåš´ãŽį§ãŽãŠæ°—ãĢå…Ĩりぎ新抟čƒŊです。 ぞた、ãģとんおぎäēēがįŸĨらãĒい新抟čƒŊもå…Ĩ手でき、Nodeとはé–ĸäŋ‚ありぞせんが、「docker compose ls」が垗られぞす。 ããŽãŸã‚ã€č¤‡æ•°ãŽãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆãŒã™ãšãĻåŽŸčĄŒã•ã‚ŒãĻいる場合、原際ãĢは 1 ã¤ãŽã‚ŗãƒžãƒŗãƒ‰ã§ã™ãšãĻをįĸēčĒã§ããžã™ã€‚ かãĒりäžŋ刊です。 åŽŸčĄŒä¸­ãŽã‚‚ãŽã‚„ã€åŋ˜ã‚ŒãĻいたäģ–ãŽãƒ‡ã‚ŖãƒŦクトãƒĒがあるかおうかをįĸēčĒã§ããžã™ã€‚

そしãĻ、先月「docker compose alpha publish」がロãƒŧãƒŗãƒã•ã‚ŒãŸã°ã‹ã‚Šã§ã™ã€‚ そしãĻã€ã“ã‚Œã¯į§ãŒį´„5åš´å‰ã‹ã‚‰æą‚ã‚ãĻいたことです。 æŦĄãĢã€ããŽã‚ŗãƒžãƒŗãƒ‰ã§äŊœæˆãƒ•ã‚Ąã‚¤ãƒĢを配įŊŽã—ぞす。 åŸēæœŦįš„ãĢã¯ã‚¤ãƒĄãƒŧジãĢč‡Ēå‹•įš„ãĢ配įŊŽã•れ、ãƒŦジ゚トãƒĒãĢãƒ—ãƒƒã‚ˇãƒĨã•ã‚Œã‚‹ãŸã‚ã€ã‚ŗãƒŧドãĒしでäŊœæˆãƒ•ã‚Ąã‚¤ãƒĢをデプロイ可čƒŊãĒã‚Ēブジェクトぞたはã‚ĸãƒŧãƒ†ã‚Ŗãƒ•ã‚Ąã‚¯ãƒˆã¨ã—ãĻå…ąæœ‰ã§ããžã™ã€‚ そしãĻ、これはKubernetesį”¨ã§ã™ã€‚ Helm ãĢは Kubernetes マニフェ゚トぎã‚Ģ゚ã‚ŋマイã‚ēãĒおがありぞすが、Compose ãĢは先月ぞでありぞせんでした。 だから、それはそこãĢありぞす。

ã—ãŸãŒãŖãĻ、compose watchは一į•Ē上ãĢこぎようãĢčĻ‹ãˆãžã™ã€‚ 「docker compose watch」とå…Ĩ力しãĻいぞす。 そしãĻ、それãĢはčŋŊ加ぎyamlがåŋ…čĻã§ã™ãŒã€ã“ã‚ŒãĢついãĻは垌ãģおčĒŦ明しぞす。 しかし、そぎäŊ™åˆ†ãĒyamlをčŋŊ加すると、ãģとんおぎ場合、開į™ēį”¨ãŽãƒã‚¤ãƒŗãƒ‰ãƒžã‚Ļãƒŗãƒˆã‚’čĄŒã†åŋ…čĻãŒãĒくãĒりぞす。 NPMãŽã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢパフりãƒŧãƒžãƒŗã‚šã‚„ã€ãƒã‚¤ãƒŗãƒ‰ãƒžã‚Ļãƒŗãƒˆã‚’äŊŋį”¨ã—ãŸãƒ­ãƒŧã‚ĢãƒĢãƒžã‚ˇãƒŗã§ãŽãƒ“ãƒĢドパフりãƒŧãƒžãƒŗã‚šãĢč‹Ļ労しãĻいるäēēはいぞすか? MutagenをčŠĻし、docker syncをčŠĻしぞした。 ハãƒŧãƒ‰ã‚ŗã‚ĸãĒ場合は、rsyncをčŠĻしãĻãŋãĻください。 いろんãĒクãƒŦイジãƒŧãĒことをするかもしれãĒい。

さãĻ、äģŠã€å¤šããŽã‚ąãƒŧ゚で compose ã‚Ļりッチがありぞす — į§ãŒčŠąã—ãŸã‚Šã€ä¸€įˇ’ãĢäŊœæĨ­ã—たり、䞋をčĻ‹ã›ãŸã‚Šã—ãĻいるäēēãŸãĄã¯ã€ã‚Ŋãƒŧã‚šã‚ŗãƒŧãƒ‰ãŽæŸį¸›ã‚’å›žéŋできるようãĢãĒãŖãŸã¨č¨€ãŖãĻいぞす。 ããŽãŸã‚ã€ãƒ›ã‚šãƒˆä¸ŠãŽãƒ•ã‚Ąã‚¤ãƒĢãŽå¤‰æ›´ã‚’į›ŖčĻ–ã—ã€ãƒãƒƒã‚¯ã‚°ãƒŠã‚Ļãƒŗãƒ‰ã§ã‚ŗãƒŗãƒ†ãƒŠãĢã‚ŗãƒ”ãƒŧするか、構成ãĢåŸēãĨいãĻã‚¤ãƒĄãƒŧã‚¸ã‚’å†æ§‹į¯‰ã—ãžã™ã€‚ ããŽãŸã‚ã€į‰šãĢMac、Windows側で寞å‡ĻしãĒければãĒらãĒいOSåĸƒį•Œé–“ãŽãƒã‚¤ãƒŗãƒ‰ãƒžã‚Ļãƒŗãƒˆã‚’å›žéŋできぞす。

ここで最垌ãĢ、こぎã‚ģã‚¯ã‚ˇãƒ§ãƒŗã§ã™ã€‚ もしあãĒたがäģĨ前ãĢå†ˇåžšãĒį›Žã ãŖãŸã‚‰ã€ã“ã‚Œã‚’čĻ‹ãĻ、一äŊ“äŊ•ã ã¨æ€ãŖãŸã‹ã‚‚ã—ã‚Œãžã›ã‚“ã€‚ ã ã‹ã‚‰ã“ã‚Œã¯į§ãŽNodeã‚ĸプãƒĒであり、これをäŊŋį”¨ã—ãĻã€ãƒ‘ãƒƒã‚ąãƒŧã‚¸ãƒ­ãƒƒã‚¯ãƒ•ã‚Ąã‚¤ãƒĢãŽãƒ‘ãƒƒã‚ąãƒŧジを変更した場合ãĢ、「docker compose watchã€ã‚’åŽŸčĄŒã™ã‚‹ãŸãŗãĢã‚¤ãƒĄãƒŧジをč‡Ēå‹•įš„ãĢå†æ§‹į¯‰ã™ã‚‹ã“ã¨ã‚’é€šįŸĨしãĻいぞす。 そしãĻã€ãƒ‡ã‚ŖãƒŦクトãƒĒãĢäŊ•かがãĒã„ã‹į›ŖčĻ–ã—ã€å¤‰æ›´ã•ã‚ŒãŸå ´åˆã¯ã€åŽŸčĄŒä¸­ãĢããŽãƒ•ã‚Ąã‚¤ãƒĢã‚’ã‚ŗãƒŗãƒ†ãƒŠãĢ同期しぞす。

node monã¯ã‚ŗãƒŗãƒ†ãƒŠå†…ãĢã‚ã‚Šã€ã‚ŗãƒŗãƒ†ãƒŠå†…ãŽå¤‰æ›´ã‚’įĸēčĒã—ã€ã‚ŗãƒŗãƒ†ãƒŠå†…ãŽã‚ĸプãƒĒを再čĩˇå‹•ã™ã‚‹ãŸã‚ã€ã‚ŗãƒŗãƒ†ãƒŠã‚’åŽŒå…¨ãĢ再čĩˇå‹•するよりも少しéĢ˜é€Ÿã§ã‚ã‚‹ãŸã‚ã€ãŠãã‚‰ãnode monぎようãĢã“ã‚Œã‚’åŽŸčĄŒã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ ã—ãŸãŒãŖãĻ、Nodeã‚ĸプãƒĒᔍãĢそれをčŋŊ加すると、Nodeå›ē有ではありぞせんが、Node開į™ē者ãĢã¨ãŖãĻは非常ãĢäžŋ刊です。 ããŽåžŒã€ã“ã‚Œã‚’åŽŸčĄŒã™ã‚‹ãŸãŗãĢ、原際ãĢäŊ•をしãĻいるかをįĸēčĒã§ããžã™ã€‚ ã“ã‚Œã¯ã€ã‚¤ãƒĄãƒŧジをプãƒĢã—ã€ã‚¤ãƒĄãƒŧã‚¸ã‚’æ§‹į¯‰ã—ã€ãã‚Œã‚‰ã‚’ã™ãšãĻã‚ĩãƒŧビ゚としãĻã‚šãƒ”ãƒŗã‚ĸップし、非常ãĢ下部ぎ小さãĒãƒ†ã‚­ã‚šãƒˆãžã§čĄ¨į¤ēするため、「docker compose up」ãĢå–ãŖãĻäģŖã‚ã‚Šãžã™ã€‚ それはčĻ‹åŽˆã‚‹ã¨č¨€ãŖãĻãŠã‚Šã€ãã‚Œã¯į§ãŽãƒ›ã‚šãƒˆãŒå¤‰åŒ–ã‚’į›ŖčĻ–ã—ãĻã„ã‚‹å ´æ‰€ã¸ãŽãƒ‘ã‚šã‚’į§ãĢ与えぞす。 つぞり、node mon やäģ–ãŽãƒ•ã‚Ąã‚¤ãƒĢᛪčĻ–ãƒĻãƒŧãƒ†ã‚ŖãƒĒãƒ†ã‚ŖãŽ 1 つãĢäŧŧãĻã„ãžã™ãŒã€ãƒã‚¤ãƒŗãƒ‰ãƒžã‚ĻãƒŗãƒˆãĒã—ã§ã‚ŗãƒŗãƒ†ãƒŠãŽåĸƒį•Œã‚’čļŠãˆãĻį™ēį”Ÿã—ãžã™ã€‚ かãĒりクãƒŧãƒĢです。

į”Ÿį”Ŗãƒã‚§ãƒƒã‚¯ãƒĒ゚ト

大丈å¤Ģです。 最垌ãĢ、ごčŗĒ問があれば、数分お時間をいただきぞすが、これはåˆļäŊœã‚’é–‹å§‹ã™ã‚‹ãŸã‚ãŽį°Ąå˜ãĒチェックãƒĒ゚トです。 ã“ã‚Œã‚‰ã¯į§ãŒį˛žįĨžįš„ãĢč€ƒãˆãĻいることであり、Nodeでぎ゚テãƒŧã‚ŋ゚ãĢé–ĸäŋ‚ãĒく、チãƒŧãƒ ã¨ä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいぞす。 į”Ÿį”ŖãĢå…Ĩる前ãĢ、åŊŧらはこれらぎことをしãĻいぞすか? それは非常ãĢį„Ļį‚šã‚’įĩžãŖãĻいるわけではありぞせんが、明らかãĢ「dockerį„ĄčĻ–ã€ãƒ•ã‚Ąã‚¤ãƒĢです。 į§ãŒä¸€įˇ’ãĢäģ•äē‹ã‚’しãĻいるチãƒŧムぎ中ãĢã¯ã€ã‚ŗãƒŗãƒ†ãƒŠãŽæœ€åˆãŽ1嚴か2嚴で、DockerãŽį„ĄčĻ–ãŒåŋ…čĻã§ã‚ã‚‹ã“ã¨ãĢ気ãĨいãĻいãĒいäēēがたくさんいるぎは銚くずきことです。 git ignoreãƒ•ã‚Ąã‚¤ãƒĢãŽã‚ŗãƒ”ãƒŧをäŊœæˆã—、それãĢノãƒŧドãƒĸジãƒĨãƒŧãƒĢをčŋŊ加すると、通常、ノãƒŧドぞたはrootäģĨ外ぎãƒĻãƒŧã‚ļãƒŧとしãĻåŽŸčĄŒã•ã‚ŒãĻã„ã‚‹ã¨ã„ã†å•éĄŒãŒč§Ŗæąēされぞす。 åŗã€‚

åŊŧらはtiniぞたはåˆĨぎinitプロã‚ģ゚をäŊŋį”¨ã—ãĻいぞす。 åŊŧらは、æœŦį•Ēį’°åĸƒã§ mon をノãƒŧド化するためãĢ PM をäŊŋį”¨ã›ãšãĢ Node ã‚’į›´æŽĨå‘ŧãŗå‡ēしãĻいぞす。 ご存įŸĨぎようãĢ、PMやyarn、そぎäģ–ぎツãƒŧãƒĢでは、ノãƒŧãƒ‰ã‚’į›´æŽĨå‘ŧãŗå‡ēしたい — 少ãĒくとも、tini ãĢ Node ã‚’į›´æŽĨå‘ŧãŗå‡ēしãĻもらいたいぎです。 åĨåēˇč¨ē断を受けたい。 これらぎプロãƒŧブは Kubernetes でåŋ…čρãĢãĒりぞす。 ただし、Dockerでは、ヘãƒĢ゚チェックとDockerãƒ•ã‚Ąã‚¤ãƒĢをå…Ĩ力するだけです。 あãĒãŸãŒãã‚Œã‚’æŒãŖãĻいるãĒら、あãĒたはデãƒŧã‚ŋベãƒŧ゚を垅つためãĢ「depends_on」をäŊŋうことができると思いぞすよね? しかし、そぎためãĢ、ノãƒŧドãĢAPIがæˆģãŖãŸã¨æƒŗåƒã—ãĻください。 Dockerfile ãĢヘãƒĢ゚チェックをčŋŊ加した場合、äģ–ぎ開į™ēč€…ã¯ã€æ‰‹å‹•ãƒ˜ãƒĢ゚チェックぎčŋŊ加äŊœæĨ­ã‚’čĄŒã†ã“ã¨ãĒく、䞝存é–ĸäŋ‚ã‚’į°Ąå˜ãĢč¨­åŽšã§ããžã™ã€‚

ã—ãŸãŒãŖãĻ、DockerfileãĢå…Ĩれると、äŊœæˆãƒ•ã‚Ąã‚¤ãƒĢでそれを回éŋできぞす。 omit dev ã‚ŗãƒžãƒŗãƒ‰ã¨ npm ci ã‚ŗãƒžãƒŗãƒ‰ã‚’äŊŋį”¨ã—ãžã™ã€‚ ãã‚ŒãŒã€į§ãŸãĄãŒå¸¸ãĢåˆļäŊœãŽé€˛ã‚æ–šã§ã™ã€‚

あãĒたぎã‚Ŋãƒŧã‚šã‚ŗãƒŧãƒ‰ã§ã¯ã€ã“ã‚Œã‚‰ã¯į§ãŒã‚ãĒたãĢã‚„ãŖãĻもらいたいことです。 あãĒたぎチãƒŧムがNodeぎã‚Ŋãƒŧã‚šã‚ŗãƒŧドをåˆļåžĄã—ãĻいるとäģŽåŽšã—ãĻ、SIGTERMとSIGINTぎプロã‚ģã‚šã‚’ã‚­ãƒŖãƒ—ãƒãƒŖã—ã€éŠåˆ‡ãĒã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚Ļãƒŗã‚’å‡Ļį†ã™ã‚‹ã‚ˆã†ãĢãŠéĄ˜ã„ã—ãžã™ã€‚ Webã‚ĩイト、Webã‚ˇã‚šãƒ†ãƒ ã€ãƒ€ã‚Ļãƒŗã‚ŋイムã‚ŧロぎデプロイをæŽĸしãĻいる場合、åŸēæœŦįš„ãĢã¯ã€ãŠãã‚‰ãã‚ˇã‚šãƒ†ãƒ ãŽã‚ã‚‹ãƒŦイヤãƒŧで、HTTPæŽĨįļšã‚’ᛪčĻ–ã—ã€FINãƒ‘ã‚ąãƒƒãƒˆã‚’ãƒ•ãƒ­ãƒŗãƒˆã‚¨ãƒŗãƒ‰ãƒ–ãƒŠã‚Ļã‚ļãĢ送äŋĄã—、クナイã‚ĸãƒŗãƒˆãŒäŊ•であれ、それらをåˆĨãŽæ­Ŗå¸¸ãĒã‚ŗãƒŗãƒ†ãƒŠãĢč‡Ēå‹•įš„ãĢãƒĢãƒŧãƒ†ã‚Ŗãƒŗã‚°ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ ã“ãŽã‚ŗãƒŗãƒ†ãƒŠã¯ã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚Ļãƒŗä¸­ã ã‹ã‚‰ã§ã™ã€‚ そしãĻ、stoppableぎようãĒプロジェクトをčĒŋずることができぞすが、これはnode.js、 npmプロジェクトは、æŽĨįļšã‚’遊切ãĢã‚Ģã‚Ļãƒŗãƒˆã—ã€åŸēæœŦįš„ãĢäēē々を切断しãĻハãƒŧドæŽĨįļšã‚’ãƒĒã‚ģットすることãĒく、ノãƒŧãƒ‰ã‚ŗãƒŗãƒ†ãƒŠãŽæ­Ŗå¸¸ãĒã‚ˇãƒŖãƒƒãƒˆãƒ€ã‚Ļãƒŗã‚’čĄŒã†æ–šæŗ•ã§ã‚ã‚‹FINãƒ‘ã‚ąãƒƒãƒˆã‚’æäž›ã—ãžã™ã€‚

ãƒ•ã‚Ąã‚¤ãƒĢI/Oã‚’ã‚„ãŖãĻいる場合、į”ģ像をã‚ĸップロãƒŧドしãĻãƒ•ã‚Ąã‚¤ãƒĢã‚ˇã‚šãƒ†ãƒ ä¸ŠãŽäŊ•ã‚‰ã‹ãŽã‚ˇã‚šãƒ†ãƒ ãĢäŋå­˜ã™ã‚‹ãĒãŠã€ãžã å¤šããŽãƒ•ã‚Ąã‚¤ãƒĢI/Oã‚’čĄŒãŖãĻいるチãƒŧムとäģ•äē‹ã‚’しãĻå­Ļã‚“ã ã“ã¨ã¯ã€ã‚ã‚‹æ™‚į‚šã§æ¨Šé™ãŒæœŦį•Ēį’°åĸƒã§ãŠå°ģを噛むことãĢãĒるということです。 į‰šãĢ、ネットワãƒŧク上でNFSãĒおをäŊŋį”¨ã—ãĻいる場合はãĒおさらです。 そぎため、ノãƒŧドぎčĩˇå‹•時ãĢ遊切ãĒ樊限をæŽĸã™ã‚ŗãƒŧドを配įŊŽã—ãĻもらい、期垅する場所ãĢ遊切ãĒæ¨Šé™ãŒčĄ¨į¤ēされãĒい場合、ã‚ĸプãƒĒãŒã‚¯ãƒŠãƒƒã‚ˇãƒĨしぞす。 というぎも、多くぎ場合、æœŦį•Ēį’°åĸƒãĢ進ãŋ、数æ—Ĩ垌ãĢはčĒ°ã‹ãŒPDFãƒŦポãƒŧトやã‚ĸプãƒĒãĒおをã‚ĸップロãƒŧドするãĒお、ãƒĻニãƒŧクãĒことをするからです。 そしãĻ、čĒ°ã‹ãŒAWS EC2 を変更し、įǁį„ļ停æ­ĸしたり、少ãĒくともãƒĻãƒŧã‚ļãƒŧがæœŦåŊ“ãĢæ‚ĒいįĩŒé¨“をしたりするためãĢã€æ¨Šé™ãŽå•éĄŒãŒã‚ã‚Šãžã™ã€‚

そぎため、ノãƒŧドぎčĩˇå‹•中ãĢãƒ‡ã‚Ŗã‚šã‚¯ãĢ書きčžŧã‚€å ´åˆã¯ã€ãƒ•ã‚Ąã‚¤ãƒĢぎã‚ĸクã‚ģã‚šč¨ąå¯ãŽįĸēčĒã‚’é–‹å§‹ã™ã‚‹ã“ã¨ã‚’å­Ļãŗãžã—ãŸã€‚ HTTP でãƒĒãƒƒã‚šãƒŗã—ãĻいる場合は、Docker、Compose、Swarm、Kubernetes ãĒお、あらゆるもぎがã‚ĸプãƒĒã‚’į›ŖčĻ–ã§ãã‚‹ã‚ˆã†ãĢã€å…ąé€šãŽæ¨™æē–æ­Ŗå¸¸æ€§ã€æ­Ŗå¸¸æ€§ã‚¨ãƒŗãƒ‰ãƒã‚¤ãƒŗãƒˆã‚’æäž›ã—ãžã™ã€‚ HTTP ã‚ĸプãƒĒをäŊŋį”¨ã›ãšã€ãƒĒãƒƒã‚šãƒŗ ポãƒŧトがãĒい場合、通常は 30 į§’ã”ã¨ãĢ書きčžŧãŋã€ãƒ‡ã‚Ŗã‚šã‚¯ä¸ŠãŽãƒ•ã‚Ąã‚¤ãƒĢãĢæ­Ŗå¸¸æ€§įŠļ態を書きčžŧãŋ、プロãƒŧãƒ–ãžãŸã¯æ­Ŗå¸¸æ€§ãƒã‚§ãƒƒã‚¯ã§ããŽãƒ•ã‚Ąã‚¤ãƒĢぎæ—Ĩäģ˜ã‚ŋイム゚ã‚ŋãƒŗãƒ—ã‚’æŽĸしぞす。 ãžãŸã¯ã€ããŽãƒ•ã‚Ąã‚¤ãƒĢぎ内部をčĻ‹ãĻã€į§ãŸãĄãŒä¸ŽãˆãŸãƒ‡ãƒŧã‚ŋをæŽĸしãĻください。 これが、非上場ã‚ĩãƒŧビ゚へぎ寞å‡Ļæ–šæŗ•ã§ã™ã€‚

そしãĻ最垌ãĢ、KubernetesポッドãĢついãĻは、DockerだけでãĒく、すずãĻãŽã‚ŗãƒŗã‚ĩãƒĢãƒ†ã‚Ŗãƒŗã‚°ã‚¯ãƒŠã‚¤ã‚ĸãƒŗãƒˆã€ã™ãšãĻぎå­Ļį”ŸãĢäŊŋį”¨ã—ãĻいる推åĨ¨ãƒãƒƒãƒ‰ä앿§˜ãŒã‚りぞす。 そしãĻ、それをつかんでください。 30į§’ã‚’ã‚‚ã‚‰ãŖãŸãŽã§ã€į§ã¯ãã‚Œã‚’é€šéŽã•ã›ã‚‹ã¤ã‚‚ã‚Šã¯ã‚ã‚Šãžã›ã‚“ã€‚ã—ã‹ã—ã€ã“ãŽäž‹ã¯ã€ã™ãšãĻぎã‚ģキãƒĨãƒĒãƒ†ã‚ŖæŠŸčƒŊと、ポッドä앿§˜ãĢåŋ…čρãĒすずãĻãŽã‚‚ãŽã‚’æäž›ã—ã€įžåœ¨ã¯æŒãŖãĻいãĒい可čƒŊ性があるもぎをæē–備しãĻおくåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ プロãƒŧブ、ãƒĒ゚ナãƒŧ、terminationGracePeriodSeconds ãŽč¨­åŽšã€į‰šæ¨Šã¨ã‚¨ã‚šã‚ĢãƒŦãƒŧã‚ˇãƒ§ãƒŗãŽį„ĄåŠšåŒ–ã€éžį‰šæ¨ŠãƒĻãƒŧã‚ļãƒŧとしãĻåŽŸčĄŒã—ãĻいることをįĸēčĒã™ã‚‹ã“ã¨ã€ãŠã‚ˆãŗã‚ģキãƒĨãƒĒãƒ†ã‚Ŗ チãƒŧムがæē€čļŗã§ãã‚‹ã‚ˆã†ãĢãã‚Œã‚’éŠį”¨ã™ã‚‹ã“ã¨ãĢついãĻčĒŦ明しぞす。 そしãĻ最垌ãĢ、DockerがデフりãƒĢãƒˆã§æŒãŖãĻいるsetcompProfilesを有劚ãĢしぞすが、すずãĻぎポッドぞたはクナ゚ã‚ŋãƒŧぎãƒŦベãƒĢã§čĄŒã‚ãĒい限り、KubernetesはデフりãƒĢãƒˆã§į„ĄåŠšãĢしぞす。

それでおしぞい。 時間がãĒくãĒãŖãĻã—ãžãŖãŸãŽã§ã€čŗĒ問を受けäģ˜ã‘ãĻおきぞす。 ありがとうございぞす。

さらãĢčŠŗã—ã

Dockerは初めãĻですか?はじめãĢ。