Docker

[Docker] 1. ๋„์ปค ๊ธฐ๋ณธ

yeonii 2024. 1. 30. 14:59

๐Ÿ“Œ ๋„์ปค(Docker)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

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

 

โœ”๏ธ ์ปจํ…Œ์ด๋„ˆ(Container)

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

 

→ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ, ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์ถ”์ƒํ™”ํ•˜๊ณ  ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

 

โœ”๏ธ ๋„์ปค ์ด๋ฏธ์ง€

์ฝ”๋“œ, ๋Ÿฐํƒ€์ž„, ์‹œ์Šคํ…œ ๋„๊ตฌ, ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์„ค์ •๊ณผ ๊ฐ™์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋Š” ๊ฐ€๋ณ๊ณ  ๋…๋ฆฝ์ ์ด๋ฉฐ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€์ด๋‹ค.

 

→ ์ฆ‰, ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๐Ÿ“Œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ํ๋ฆ„

  1. ๋„์ปค ํด๋ผ์ด์–ธํŠธ์— ์ปค๋งจ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ์—์„œ ๋„์ปค ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
  2. ์„œ๋ฒ„์—์„œ hello-world๋ผ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ๋กœ์ปฌ์— cache ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  3. ํ˜„์žฌ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, Unable to find image 'hello-world:latest' locally ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.
  4. ๊ทธ๋Ÿฌ๋ฉด Docker Hub๋ผ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์—์„œ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๋กœ์ปฌ์— cache๋กœ ๋ณด๊ด€ํ•œ๋‹ค.
  5. ์ดํ›„์—๋Š” ๋กœ์ปฌ์— ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์œผ๋‹ˆ ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

๐Ÿ“Œ ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ

์ด๋ฏธ์ง€๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

  1. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ช…๋ น์–ด ex) run kakaotalk
  2. ํŒŒ์ผ ์Šค๋ƒ…์ƒท ex) ์นด์นด์˜คํ†ก ํŒŒ์ผ ์Šค๋ƒ…์ƒท (์นด์นด์˜คํ†ก์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒŒ์ผ)

โœ”๏ธ ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“œ๋Š” ์ˆœ์„œ

  1. Docker ํด๋ผ์ด์–ธํŠธ์— docker run <์ด๋ฏธ์ง€>๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  2. ๋„์ปค ์ด๋ฏธ์ง€์— ์žˆ๋Š” ํŒŒ์ผ ์Šค๋ƒ…์ƒท์„ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋“œ ๋””์Šคํฌ์— ์˜ฎ๊ฒจ์ค€๋‹ค.
  3. ์ด๋ฏธ์ง€์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์นด์นด์˜คํ†ก์„ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

 

๐Ÿ“Œ C-group & Namespace

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฒฉ๋ฆฌ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ 2๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ๋‹ค.

 

C-Group :  CPU, ๋ฉ”๋ชจ๋ฆฌ, Network Bandwidth๋“ฑ ํ”„๋กœ์„ธ์Šค์˜ ๊ทธ๋ฃน์„ ๊ด€๋ฆฌ

Namespace : ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒํ™” ๊ธฐ์ˆ