Docker๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌ์ถ•, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.1

Docker๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ(Container)๋ผ๋Š” ํ˜•ํƒœ๋กœ ๋ฐฐํฌํ•˜๋Š”๋ฐ, ๊ธฐ์กด ๋ฐฐํฌ ๋ฐฉ์‹์— ๋น„ํ•ด ๊ฐ€์ง€๋Š” ๋งŽ์€ ์žฅ์ ์œผ๋กœ ์ธํ•ด ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ์ง€๊ธˆ์€ Docker๋ฅผ ํ”ผํ•˜๋ ค๋Š” ์›€์ง์ž„๋„ ์žˆ๊ธด ํ•˜์ง€๋งŒ, DevOps ๋ถ„์•ผ์— ํ•œ ํš์„ ๊ทธ์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ถ€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Docker์˜ ์žฅ์ 

์–ด๋””์„œ๋‚˜ ๋™์ผํ•œ ํ™˜๊ฒฝ ์ œ๊ณต

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์ˆ˜๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ, ๊ทธ์ค‘ ๊ตฌ๋™ ํ™˜๊ฒฝ ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ก ํŠธ์—”๋“œ ์•ฑ์„ ๋นŒ๋“œํ•  ๋•Œ ๋‹ค๋ฅธ Node.js ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, Spring Boot ๋ฐฑ์—”๋“œ์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” Java ๋ฒ„์ „์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์•ฑ์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ํž˜๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด ๊ตฌ๋™ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋‹ด๊ณ  ์žˆ์–ด ์–ด๋””์„œ๋‚˜ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์•ฑ์ด ์‹คํ–‰๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Dockerfile์ด๋ผ๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ์„ ํ†ตํ•ด ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์—๋Ÿฌ์™€ ํ•จ๊ป˜ ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฅ์•  ์ง„๋‹จ์„ ๋ฏธ๋ฆฌ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋Š ํ™˜๊ฒฝ์—์„œ๋‚˜ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œโ€ข๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
Docker ์—”์ง„์ด ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์šด์˜ ์ฒด์ œ์— ๊ด€๊ณ„์—†์ด docker ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ฐ„ํŽธํ•œ ๊ด€๋ฆฌ์™€ ํ™•์žฅ

Docker ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ๋งˆ์น˜ ํ•˜๋‚˜์˜ ํ‹€๊ณผ ๊ฐ™์•„์„œ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•ฑ์„ ์†์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋‹ค์ˆ˜์˜ ์•ฑ์„ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹จ์ˆœํžˆ ๊ทธ๋งŒํผ docker run ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ™˜๊ฒฝ์„ ์ผ์ผ์ด ์ œ์–ดํ•  ํ•„์š”๋„ ์—†๊ณ , ์˜ค๋ฅ˜์˜ ์œ„ํ—˜๋„ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌโ€ขํ™•์žฅ์˜ ๋‚œ์ด๋„๊ฐ€ ๋งค์šฐ ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ถ•์†Œ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ด์ „ ๋ฒ„์ „์˜ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ์žฅ์•  ์ƒํ™ฉ์—์„œ ๋กค๋ฐฑ๋„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋“ฑ ์ผ๋ถ€ ์„ค์ •๊ฐ’์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•  ์ˆ˜ ์žˆ์–ด ์–ด๋Š ์ •๋„์˜ ์œ ๋™์„ฑ๋„ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์› ์‚ฌ์šฉ๋Ÿ‰๋„ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Docker์˜ ํ•œ๊ณ„

ํ•˜์ง€๋งŒ Docker๋„ ๋งŒ๋Šฅ์€ ์•„๋‹™๋‹ˆ๋‹ค. Docker๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋Œ€๊ทœ๋ชจ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ํž˜๋“ค์—ˆ๊ณ , ์ด๋Š” Kubernetes์˜ ๋“ฑ์žฅ์œผ๋กœ ์ด์–ด์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Docker ์ž์ฒด์˜ ์ทจ์•ฝ์ ๋„ ์žˆ๋Š”๋ฐ, ๊ทธ์ค‘ ์ž˜ ์•Œ๋ ค์ง„ ๊ฒƒ์€ Docker ๋ฐ๋ชฌ์ด ๋„ˆ๋ฌด ๋งŽ์€ ๊ถŒํ•œ์„ ์š”๊ตฌํ•˜์—ฌ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ์„ฑ๋Šฅ ๋ฌธ์ œ ๋“ฑ ์—ฌ๋Ÿฌ ๋‹จ์ ์ด ์ง€์ ๋˜๋ฉด์„œ ์ตœ๊ทผ์—๋Š” kaniko, BuildKit๊ณผ ๊ฐ™์ด Docker์˜ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•œ ๋„๊ตฌ์˜ ์ธ์ง€๋„๋„ ๋†’์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Footnotes

  1. Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? | AWS (amazon.com) โ†ฉ