Container

๐Ÿ”ญ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ถ„์„์ด ํ•„์š”ํ•  ๋•? - dive

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ Layer ๋‹จ์œ„๋กœ ๋ถ„์„ ๊ฐ€๋Šฅํ•œ ํˆด dive๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

2024.05.20 | ์กฐํšŒ 394 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, DevOps ์†Œ์‹๊ณผ ๊ธฐ์ˆ  ์ง€์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ ์†Œ์‹์ง€์—์„œ Container Image ๊ธฐ๋ฐ˜์œผ๋กœ Dockerfile์„ ์ƒ์„ฑํ•˜๋Š” Dedockify ํˆด๊ณผ Container Image๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” Layer์— ๋Œ€ํ•ด ์•Œ์•„๋ดค๋Š”๋ฐ์š”.

์ด๋ฒˆ์—๋Š” Container Image์˜ ๊ฐ Layer๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด dive๋ฅผ ์†Œ๊ฐœํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

๐Ÿ”ŽDocker Image ๋ถ„์„ ํˆด dive

Container Image์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด Image ๋‚ด๋ถ€์— ์–ด๋–ค ํŒŒ์ผ์ด๋‚˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด ๋Œ€๋ถ€๋ถ„ docker๋ฅผ ์ด์šฉํ•ด์„œ Image๋ฅผ ์‹คํ–‰(docker run)ํ•˜๊ณ , Instance ๋‚ด๋ถ€๋กœ ์ ‘๊ทผ(docker exec)ํ•˜๋Š”๋ฐ์š”.

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฐฉ์‹์€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์†๋„ ๋งŽ์ด ๊ฐ€์ฃ .

์ด๋•Œ dive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Image๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ‘

dive๋Š” Container Image์˜ Layer๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ž…๋‹ˆ๋‹ค.
dive๋Š” Container Image์˜ Layer๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์ž…๋‹ˆ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ dive๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋Œ€์ƒ Container Image์˜ ๊ฐ Layer ๋ณ„๋กœ ๋‚ด๋ถ€์— ์ €์žฅ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ๋“ค์„ ํŠธ๋ฆฌ๊ตฌ์กฐ๋กœ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ๋‹ค Layer ๊ฐ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ฃ .

Image ๋‚ด๋ถ€์— ๋‚ญ๋น„๋˜๋Š” ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Image Efficiency Score๋ผ๋Š” ์ง€ํ‘œ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (์ฐธ๊ณ ๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์€ ์•„์ง ์‹คํ—˜ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.)

 

๐Ÿ”Ždive๋กœ Docker Image๋ฅผ Layer ๋‹จ์œ„๋กœ ๋ถ„์„ํ•˜๊ธฐ

dive๊ฐ€ Container Image๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„์„ํ•˜๋Š”์ง€ ์ข€ ๋” ์ž์„ธํžˆ ์„ค๋ช…๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ์˜ˆ์ œ๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.๐Ÿค“

์ง€๋‚œ ํšŒ ์†Œ์‹์ง€์˜ Dedockify ์‹ค์Šต ๋•Œ์™€ ๊ฐ™์ด, ์ด๋ฒˆ dive ์‚ฌ์šฉ ์˜ˆ์ œ์—์„œ๋„ golang์˜ ๊ณต์‹ Image๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € dive์˜ Docker Image๋ฅผ ๊ณต์‹ Repository์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. 

docker pull wagoodman/dive ๋ช…๋ น์–ด๋กœ dive์˜ ๊ณต์‹ Image๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
docker pull wagoodman/dive ๋ช…๋ น์–ด๋กœ dive์˜ ๊ณต์‹ Image๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ dive์˜ Image๋ฅผ interactive ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive {๋Œ€์ƒ Image ์ด๋ฆ„}
dive ์ด๋ฏธ์ง€๋ฅผ Interactive ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๊ณง์ด์–ด ํ„ฐ๋ฏธ๋„์— Image ๋ถ„์„ ํ™”๋ฉด์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. 
dive ์ด๋ฏธ์ง€๋ฅผ Interactive ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๊ณง์ด์–ด ํ„ฐ๋ฏธ๋„์— Image ๋ถ„์„ ํ™”๋ฉด์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. 

dive ์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ„ฐ๋ฏธ๋„์— dive์˜ Image ๋ถ„์„ ํ™”๋ฉด์ด ํ‘œ์‹œ๋˜๋Š”๋ฐ์š”.

ํ™”์‚ดํ‘œ ํ‚ค๋กœ Layer๋ณ„๋กœ Image ๋‚ด๋ถ€์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€์ƒ Image์˜ ์ฒซ ๋ฒˆ์งธ Layer์— ์ €์žฅ๋œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ(์˜ค๋ฅธ์ชฝ)๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.
๋Œ€์ƒ Image์˜ ์ฒซ ๋ฒˆ์งธ Layer์— ์ €์žฅ๋œ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ(์˜ค๋ฅธ์ชฝ)๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ Layer๋ฅผ ์„ ํƒํ•˜๋ฉด ์ด์ „ Layer์—์„œ ์–ด๋–ค ํŒŒ์ผ์ด ์ˆ˜์ •(๋…ธ๋ž€์ƒ‰)๋˜๊ณ  ์ถ”๊ฐ€(์ดˆ๋ก์ƒ‰)๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ Layer๋ฅผ ์„ ํƒํ•˜๋ฉด ์ด์ „ Layer์—์„œ ์–ด๋–ค ํŒŒ์ผ์ด ์ˆ˜์ •(๋…ธ๋ž€์ƒ‰)๋˜๊ณ  ์ถ”๊ฐ€(์ดˆ๋ก์ƒ‰)๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ dive ํ™”๋ฉด ์™ผ์ชฝ ํ•˜๋‹จ์—์„œ Image Efficiency Score๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•œ golang์˜ ์ ์ˆ˜๋Š” 99%๋กœ, ์ „์ฒด 823MB ์ €์žฅ ๊ณต๊ฐ„ ์ค‘ 7MB ์ •๋„๋งŒ ๋‚ญ๋น„๋˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•œ golang์˜ ์ ์ˆ˜๋Š” 99%๋กœ, ์ „์ฒด 823MB ์ €์žฅ ๊ณต๊ฐ„ ์ค‘ 7MB ์ •๋„๋งŒ ๋‚ญ๋น„๋˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

 

๐Ÿ”ญ๋งˆ์น˜๋ฉฐ...

Container Image๋ฅผ ์ค‘์‹ฌ ์ฃผ์ œ๋กœ ์ €๋ฒˆ ์†Œ์‹์ง€์—์„œ๋Š” Dockerfile ์ƒ์„ฑ ํˆด Dedockify๋ฅผ, ์ด๋ฒˆ ์†Œ์‹์ง€์—์„  Image Layer ๋ถ„์„ ํˆด dive์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋“œ๋ ธ๋Š”๋ฐ์š”.

DevOps ๋ถ„์•ผ์—์„œ Container Image๋Š” ํ•„์ˆ˜ ์š”์†Œ์ธ ๋งŒํผ, Image๋ฅผ ๋”์šฑ ์‰ฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ํˆด๋“ค์„ ์‚ดํŽด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ดค์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ์ด๋ฒˆ ๋‚ด์šฉ ๊ด€๋ จํ•ด์„œ ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋ฉ”์ผ๋ฆฌ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.๐Ÿ˜€

๊ทธ๋Ÿผ, ๋‹ค์Œ ์†Œ์‹์ง€์—์„œ ๋ณด๋‹ค ์•Œ์ฐจ๊ณ  ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๊ตฌ๋…์ž๋‹˜ ๐Ÿ˜บ

 

๐Ÿ”—References

 

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !
ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์„œ๋น„์Šค ์†Œ๊ฐœ์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ ์‚ฌ์—…์ž ์ •๋ณด

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€