๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
DevOps/Docker

[Docker] ๋„์ปค, ์ปจํ…Œ์ด๋„ˆ์˜ ํŠน์ง•

by ํƒœ์˜น 2021. 9. 16.

๐Ÿ‘‡ ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์•„๋ž˜์˜ ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://www.inflearn.com/course/%EB%8F%84%EC%BB%A4-%EC%9E%85%EB%AC%B8/dashboard

 

์ดˆ๋ณด๋ฅผ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋„์ปค๋ฅผ 1๋„ ๋ชจ๋ฅด๋Š” ์ž…๋ฌธ์ž, ์ดˆ๋ณด์ž๋ถ„๋“ค์„ ์œ„ํ•œ ๋„์ปค ์•ˆ๋‚ด์„œ ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๋‚ด์šฉ์„ ์ œ์™ธํ•˜๊ณ  ๋„์ปค๊ฐ€ ์™œ ์ธ๊ธฐ๊ฐ€ ๋งŽ๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋„๋ก ์ง‘์ค‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค., ๋ฐ๋ธŒ์˜ต์Šค ์ž…๋ฌธ

www.inflearn.com


๋ชฉ์ฐจ

1. ๋„์ปค์˜ ํŠน์ง•

  • ํ™•์žฅ์„ฑ/์ด์‹์„ฑ
  • ํ‘œ์ค€์„ฑ
  • ์ด๋ฏธ์ง€
  • ์„ค์ •๊ด€๋ฆฌ
  • ์ž์›๊ด€๋ฆฌ

2. ๋„์ปค๊ฐ€ ๊ฐ€์ ธ์˜จ ๋ณ€ํ™”

 

3. ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฏธ๋ž˜

  • ์Šค์ผ€์ค„๋ง
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง
  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

 

๋„์ปค์˜ ํŠน์ง•

 

1. ํ™•์žฅ์„ฑ/์ด์‹์„ฑ

  • ๋„์ปค๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์–ด๋””์„œ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŠน์ • ํšŒ์‚ฌ๋‚˜ ์„œ๋น„์Šค์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค. (์˜คํ”ˆ์†Œ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—!)
  • ๋ฐฐํฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ํ…Œ์ŠคํŠธ ์„œ๋ฒ„ ์ƒ์„ฑ๋„ ๊ฐ„ํŽธํ•˜๋‹ค.

 

2. ํ‘œ์ค€์„ฑ

  • ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ruby,nodejs,go,php๋กœ ๋งŒ๋“  ์„œ๋น„์Šค๋“ค์˜ ๋ฐฐํฌ ๋ฐฉ์‹์€ ์ œ๊ฐ๊ฐ ๋‹ค๋ฅด๋‹ค. (์„ค์น˜ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ๋ฐฐํฌ ๋ฐฉ์‹ ๋“ฑ์ด ๋‹ค ๋‹ค๋ฆ„!)
  • ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ํ‘œ์ค€์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์˜ ๋ฐฐํฌ๊ณผ์ •์ด ๋™์ผํ•ด์กŒ๋‹ค. (docker compose up์ด๋ผ๋Š” ๋ช…๋ น์–ด ํ•˜๋‚˜๋กœ ๋ฐฐํฌ๊ณผ์ •์ด ํ‘œ์ค€ํ™”๋จ)

 

3. ์ด๋ฏธ์ง€

(์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์••์ถ•ํŒŒ์ผ๊ฐ™์€ ๊ฒƒ)

  • ์ด๋ฏธ์ง€์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • Dockerfile(์Šคํฌ๋ฆฝํŠธ)์„ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๋ฉด ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ  ์šด์˜ ์„œ๋ฒ„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

4. ์„ค์ •๊ด€๋ฆฌ

  • ๋ณดํ†ต ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์„ค์ •์„ ์ œ์–ดํ•จ
  • MYSQL_PASS=password์™€ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šธ ๋•Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ฐ™์ด ์ง€์ •ํ•œ๋‹ค. (์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด๋†“์œผ๋ฉด ๊ทธ๋•Œ๊ทธ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๊ฐ€ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์„ค์ •ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ ธ์•ผํ•œ๋‹ค.

 

5. ์ž์›๊ด€๋ฆฌ

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ญ์ œ ํ›„ ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ดˆ๊ธฐํ™”๋œ๋‹ค. (๊ฐ€์ƒ ๊ณต๊ฐ„์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งˆ๋ จ๋˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋ผ์งˆ ์œ„ํ—˜์ด ์žˆ๋‹ค.)
  • ์—…๋กœ๋“œ ํŒŒ์ผ์„ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€์™€ ๋งํฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ S3๊ฐ™์€ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์„ธ์…˜์ด๋‚˜ ์บ์‹œ๋ฅผ memcached๋‚˜ redis์™€ ๊ฐ™์€ ์™ธ๋ถ€๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค.

 

 


 

๋„์ปค๊ฐ€ ๊ฐ€์ ธ์˜จ ๋ณ€ํ™”

 

1. ํด๋ผ์šฐ๋“œ ์ด๋ฏธ์ง€๋ณด๋‹ค ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

2. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ฒฉ๋ฆฌ๋˜์–ด ๊ฐ€์ƒ๋จธ์‹ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.

3. ๋ฆฌ๋ˆ…์Šค์˜ ๋ณต์žกํ•œ ๊ธฐ์ˆ (namespace, cgroups, network,...)์„ ๋ชฐ๋ผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ธฐ๋ก์ด ๋‚จ๋Š”๋‹ค.(๊นƒ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.)

5. ์ฝ”๋“œ์™€ ์„ค์ •์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌํ˜„ ๋ฐ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

6. ์˜คํ”ˆ์†Œ์Šค์ด๋ฏ€๋กœ ํŠน์ • ํšŒ์‚ฌ ๊ธฐ์ˆ ์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค.

 

์œ ๋ช…ํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๋˜๊ณ ,

๋‚ด๊ฐ€ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ๊ฐ™์€ ๊ฑด ์ง์ ‘ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


์ปจํ…Œ์ด๋„ˆ์˜ ๋ฏธ๋ž˜

 

์š”์ฆ˜์€ ๋„์ปค ๋ง๊ณ ๋„ ์—ฌ๋Ÿฌ ์ข‹์€ ๊ธฐ์ˆ ๋“ค์ด ๋“ฑ์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„์ปค์˜ ์ž…์ง€๊ฐ€ ํ”๋“ค๋ฆฌ๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋„์ปค ์ž์ฒด๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ ์ค‘์‹ฌ์ ์œผ๋กœ ์•ž์œผ๋กœ์˜ ์ „๋ง์„ ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

์ด์ œ๋Š” '์ฟ ๋ฒ„๋„คํ‹ฐ์Šค'๊ฐ€ ์„œ๋ฒ„๊ด€๋ฆฌ์˜ ๋Œ€์„ธ๊ฐ€ ๋˜์–ด๊ฐ€๊ณ  ์žˆ๋‹ค.

๋„์ปค๊ฐ€ 'ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹'์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” '์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹'์ด๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋„์ปค๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•ด๋ณด๋ฉด, ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

์Šค์ผ€์ค„๋ง

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

 

ํด๋Ÿฌ์Šคํ„ฐ๋ง

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

 

์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

  • ์„œ๋น„์Šค๋ฅผ ์ฐพ์•„์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ฒˆ ์„œ๋ฒ„์— ์›Œ๋“œํ”„๋ ˆ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด๊ณ  2๋ฒˆ ์„œ๋ฒ„์— MySQL์ด ์‹คํ–‰ ์ค‘์ด๋ฉด, ๊ทธ ๋‘˜์„ ์—ฐ๊ฒฐํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋Š ์„œ๋ฒ„์— ์ƒ์„ฑ๋  ์ง€ ์•Œ ์ˆ˜ ์—†๊ณ  ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์ด๋™ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ์™€ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋Š ์„œ๋ฒ„์—์„œ ์‹คํ–‰ ์ค‘์ธ์ง€ ์•Œ์•„์•ผ ํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ค‘์ง€๋  ๋•Œ ์–ด๋”˜๊ฐ€์— IP์™€ Port๊ฐ™์€ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • key-value ์Šคํ† ๋ฆฌ์ง€์— ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‚ด๋ถ€ DNS์„œ๋ฒ„๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

๋Œ“๊ธ€