Docker๋ž€?

niireymikยท2024๋…„ 5์›” 27์ผ

๐Ÿณ ๋„์ปค Docker

๋„์ปค๋ž€?

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


๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์‰ฝ๊ฒŒ ์ƒํ™ฉ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž.

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

๊ทธ๋ž˜์„œ, ๊ฐœ๋ฐœ์ž์˜ ์ด๋Ÿฌํ•œ ๊ณ ์ถฉ์„ ํ•ด๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด Docker์ด๋‹ค. ๋ฏธ๋ฆฌ ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด, ๋„์ปค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ จ ์ •๋ณด๋ฅผ '๋„์ปค ์ด๋ฏธ์ง€'๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ , ์ด๋ฅผ ์ €์žฅํ•ด๋‘” ๋‹ค์Œ, ์–ด๋А ํ™˜๊ฒฝ์—์„œ๋“  ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋งŒ ํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ์„ธํŒ…๋˜๋„๋ก ํ•ด์ค€๋‹ค! ๋ง ๊ทธ๋Œ€๋กœ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ช‡ ์ดˆ ์•ˆ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค!โœจ

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์šฐ๋ฆฌ๊ฐ€ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ด๋‹ค :>


๊ฐ€์ƒ๋จธ์‹ ๊ณผ ๋„์ปค์˜ ์ฐจ์ด์ 

์šฐ์„  ๊ฐ€์ƒํ™”๋ž€, ํ•˜๋‚˜์˜ ์‹ค๋ฌผ ์ปดํ“จํŒ… ์ž์›์„ ๋งˆ์น˜ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์ƒ์œผ๋กœ ์ชผ๊ฐœ์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹ค๋ฌผ ์ปดํ“จํŒ… ์ž์›๋“ค์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์ž์›์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ€์ƒ๋จธ์‹ ๊ณผ ๋„์ปค ๋ชจ๋‘ ๊ฐ€์ƒํ™”์— ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋ถ„๋ช…ํ•œ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ์ด๋ฅผ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž.

VM์˜ ๊ฒฝ์šฐ, Host OS ์œ„์— ๊ฐ€์ƒํ™”๋ฅผ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ Hypervisor ์—”์ง„ ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์œ„์— Guest OS๋ฅผ ์˜ฌ๋ ค ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ๊ฐ€์ƒํ™”๋œ ํ•˜๋“œ์›จ์–ด ์œ„์— OS๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ํ˜•ํƒœ๋กœ ๊ฑฐ์˜ ์™„๋ฒฝํ•˜๊ฒŒ Host์™€ ๋ถ„๋ฆฌ๋œ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•ด ์ƒ์„ฑ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š” ์šด์˜์ฒด์ œ๋Š” ๊ฒŒ์ŠคํŠธ ์šด์˜์ฒด์ œ(Guest OS)๋ผ๊ณ ํ•˜๋ฉฐ,๊ฐ ๊ฒŒ์ŠคํŠธ์šด์˜์ฒด์ œ๋Š” ๋‹ค๋ฅธ ๊ฒŒ์ŠคํŠธ ์šด์˜์ฒด์ œ์™€๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ๋œ ๊ณต๊ฐ„๊ณผ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ€์ƒํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ํˆด์€ VirtualBox, VMware ๋“ฑ์ด ์žˆ๋‹ค.

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

์ฆ‰, ๊ฐ€์ƒ ๋จธ์‹ ์€ ์™„๋ฒฝํ•œ ์šด์˜์ฒด์ œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์„ฑ๋Šฅ ์†์‹ค์ด ์žˆ๊ณ , ์ˆ˜ ๊ธฐ๊ฐ€ ๋ฐ”์ดํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ฐฐํฌํ•˜๊ธฐ์—๋Š” ๋ถ€๋‹ด์Šค๋Ÿฝ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค!

๋ฐ˜๋ฉด์— ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™”๋Š” Docker ์—”์ง„ ์œ„์— Application ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค. ๊ฐ€์ƒํ™”๋œ ๊ณต๊ฐ„์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ˆ…์Šค์˜ ์ž์ฒด ๊ธฐ๋Šฅ์ธ *chroot, ๋„ค์ž„์ŠคํŽ˜์ด์Šค(namespace), cgroup์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์„ฑ๋Šฅ ์†์‹ค์ด ๊ฑฐ์˜ ์—†๋‹ค. ์ด๋Š” ์ปค๋„์„ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์‹คํ–‰ ํŒŒ์ผ๋งŒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ์ด๋ฏธ์ง€์˜ ์šฉ๋Ÿ‰ ๋˜ํ•œ VM์— ๋น„ํ•ด ๋งค์šฐ ์ ๋‹ค.

์ด๋Ÿฌํ•œ ๋„์ปค์˜ ์„ฑ๋Šฅํ–ฅ์ƒ, ๋›ฐ์–ด๋‚œ ์ด์‹์„ฑ, ์‰ฝ๊ฒŒ Scale Out์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์ด๋ผ๋Š” ์žฅ์ ์ด, ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ด์œ ๊ฐ€ ๋œ ๋“ฏํ•˜๋‹ค!โœจ

chroot, namespace, cgroup?

  • chroot : ๋ฆฌ๋ˆ…์Šค ํŒŒ์ผ์‹œ์Šคํ…œ์€ root๋กœ๋ถ€ํ„ฐ ํŒŒ์ผ์‹œ์Šคํ…œ์ด ์‹œ์ž‘๋œ๋‹ค. chroot๋ฅผ ํ†ตํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ root๋กœ ์ง€์ •ํ•˜์—ฌ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ์„ค์ •ํ•จ์œผ๋กœ์จ ํ•ด๋‹น ๊ฒฝ๋กœ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • namespace : ํ”„๋กœ์„ธ์Šค๋ฅผ ์„œ๋กœ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ด๋Š” ์ž์›์˜ ์ข…๋ฅ˜๋ฅผ ์ œํ•œํ•œ๋‹ค. ์ข…๋ฅ˜๋Š” PID, NetWork, User, Time ๋“ฑ์ด ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฉ๋ฆฌ, ๋ฆฌ์†Œ์Šค ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • cgroup : ์ œ์–ด ๊ทธ๋ฃน(cgroup)์€ ํ”„๋กœ์„ธ์Šค ๋ชจ์Œ์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰(CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ I/O, ๋„คํŠธ์›Œํฌ ๋“ฑ)์„ ์ œํ•œ, ๊ฒฉ๋ฆฌํ•˜๋Š” Linux ์ปค๋„ ๊ธฐ๋Šฅ์ด๋‹ค. ์ด๋Š” ์ž์›์˜ ์–‘์„ ์ œํ•œํ•œ๋‹ค.

๋„์ปค์˜ ๋ฌธ์ œ์ 

  • ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ : ๋„์ปค๋Š” ๊ฒฉ๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์™„์ „ํ•œ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ๊ณต๊ฒฉ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, ์ ์ ˆํ•œ ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ : ๋„์ปค๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์ผ๋ถ€ ์šด์˜์ฒด์ œ์—์„œ๋Š” ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, Windows๋‚˜ macOS์—์„œ๋Š” ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ด ํ•„์š”ํ•˜๋‹ค.


๐Ÿ‹ ๋„์ปค ์•„ํ‚คํ…์ฒ˜

๋„์ปค ์—”์ง„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์ด๋ฉฐ ๋„์ปค ์—”์ง„์˜ ํ•ต์‹ฌ์ด๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ๋Š” 1:N ๊ด€๊ณ„์ด๋ฉฐ, ์ด ๋‘˜์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ํด๋ž˜์Šค <-> ์ธ์Šคํ„ด์Šค์˜ ๊ด€๊ณ„์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ๋” ํŽธํ•˜๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.


๋„์ปค ํŒŒ์ผ-์ด๋ฏธ์ง€-์ปจํ…Œ์ด๋„ˆ์˜ ํ๋ฆ„

Docker File -> Docker Image : Docker File์€ ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ. docker build ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

Docker Image -> Docker Container : Docker Image๋ฅผ docker run ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด Docker Container๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


๋„์ปค ์ด๋ฏธ์ง€

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


๋„์ปค ์ปจํ…Œ์ด๋„ˆ

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

(๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ ์‚ฌ์šฉ)
์›น ์„œ๋ฒ„ ๋„์ปค ์ด๋ฏธ์ง€๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐœ์ˆ˜๋งŒํผ ์›น ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์ด ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์™ธ๋ถ€์— ์›น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋˜ ์ด๋ฏธ์ง€์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ๋งŒ ์ปจํ…Œ์ด๋„ˆ ๊ณ„์ธต์— ์ €์žฅํ•˜๋ฏ€๋กœ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋ฌด์—‡์„ ํ•˜๋“ ์ง€ ์›๋ž˜ ์ด๋ฏธ์ง€๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ์ƒ์„ฑ๋œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ๊ธฐ ๋…๋ฆฝ๋œ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ œ๊ณต๋ฐ›์œผ๋ฉฐ ํ˜ธ์ŠคํŠธ์™€ ๋ถ„๋ฆฌ๋ผ ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ์ปจํ…Œ์ด๋„ˆ์—์„œ ์–ด๋–ค ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด๋„ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ๋Š” ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.


๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์ด๋ฏธ์ง€๋ฅผ ์ €์žฅ ๋ฐ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ถ€(local) ๋„์ปค ํ˜ธ์ŠคํŠธ์— pullํ•  ์ˆ˜ ์žˆ๋‹ค.
public ์ €์žฅ์†Œ : Docker Hub, QUAY
private ์ €์žฅ์†Œ : Docker Registry ๋“ฑ์„ ์ง์ ‘ ๋„์›Œ์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•



๐Ÿ‹ ๋„์ปค ํ—ˆ๋ธŒ / ๋„์ปค ์ปดํฌ์ฆˆ

๋„์ปค ํ—ˆ๋ธŒ Docker Hub

Docker Hub๋Š” ๋„์ปค(Docker) ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์ด๋‹ค. ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ, ์ €์žฅ ๋ฐ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘์•™ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์€ Docker Hub๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ๋‹ค์šด๋กœ๋“œํ•˜๋ฉฐ, ์—…๋กœ๋“œํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. Docker Hub์—๋Š” ๊ณต์‹์ ์œผ๋กœ ์œ ์ง€๋˜๊ณ  ์—…๋ฐ์ดํŠธ๋˜๋Š” ์ˆ˜๋งŽ์€ ์˜คํ”ˆ ์†Œ์Šค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋“ค์ด ์žˆ์–ด์„œ, ์ด ์ด๋ฏธ์ง€๋“ค์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋†’์€ ํ’ˆ์งˆ์˜ ์ด๋ฏธ์ง€๋“ค์„ ์†์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„์ปค ํ—ˆ๋ธŒ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ €์žฅ์†Œ : ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜๊ณ , ๊ฐ€์ ธ์˜จ๋‹ค.
  • ๊ณต์‹ ์ด๋ฏธ์ง€ : Docker์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณ ํ’ˆ์งˆ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋นŒ๋“œ : GitHub๋ฐ Bitbucket์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  Docker Hub๋กœ ํ‘ธ์‹œํ•œ๋‹ค.

๋„์ปค ์ปดํฌ์ฆˆ Docker Compose

๋„์ปค ์ปดํฌ์ฆˆ๋Š” ๋‹จ์ผ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ์ •์˜ํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฌถ์Œ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—… ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ด€๋ฆฌ ๋„๊ตฌ์ด๋‹ค. ๋„์ปค ์ปดํฌ์ฆˆ ์ •์˜ ํŒŒ์ผ์€ YAML ํ˜•์‹์œผ๋กœ ํ™•์žฅ์ž๋Š” .yml ์ด๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋™์ž‘ํ•  ๋•Œ ๋„์ปค ์ปดํฌ์ฆˆ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ์›น ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปจํ…Œ์ด๋„ˆ ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋กœ ์ •๋ฆฌํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฌถ์Œ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋„์ปค ์ปดํฌ์ฆˆ์ด๋‹ค.

๋„์ปค ์ปดํฌ์ฆˆ๋Š” ์‹œ์Šคํ…œ ๊ตฌ์ถ•๊ณผ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ํ…์ŠคํŠธ ํŒŒ์ผ(์ •์˜ ํŒŒ์ผ)์— ๊ธฐ์žฌํ•ด, ๋ช…๋ น์–ด ํ•œ๋ฒˆ์— ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ข…๋ฃŒ์™€ ํ๊ธฐ๊นŒ์ง€ ํ•œ๋ฒˆ์— ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ์ •์˜ ํŒŒ์ผ๋กœ ํ•ฉ์ณ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ๋„์ปค ์ปดํฌ์ฆˆ์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ธ ๋งŒํผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๊ณผ ๊ด€๊ณ„๊ฐ€ ๊นŠ์–ด์„œ, ๋„์ปค ์ปดํฌ์ฆˆ์™€๋„ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฝ๋‹ค.

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค : ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ
  • ๋„์ปค ์ปดํฌ์ฆˆ : ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ, ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ ์—†์Œ

    + ๋„์ปค ์ปดํฌ์ฆˆ์™€ ๋„์ปค ํŒŒ์ผ๋„ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์œ ์˜ํ•˜์ž! ๋„์ปค ์ปดํฌ์ฆˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ์ฃผ๋ณ€ ํ™˜๊ฒฝ ์ƒ์„ฑ, ๋„คํŠธ์›Œํฌ์™€ ๋ณผ๋ฅจ๊นŒ์ง€ ๋งŒ๋“ ๋‹ค. ๋„์ปค ํŒŒ์ผ์€ ๋‹จ์ง€ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.


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

0๊ฐœ์˜ ๋Œ“๊ธ€