Search

6. Container Storage

1. ์ปจํ…Œ์ด๋„ˆ ์Šคํ† ๋ฆฌ์ง€์˜ ๊ธฐ๋ณธ ํŠน์ง•

โ€ข
์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํœ˜๋ฐœ์„ฑ(Volatile)์ด ์žˆ์Œ
โ€ข
์ฆ‰, ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ํ•จ๊ป˜ ์‚ฌ๋ผ์ง
โ€ข
๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กดํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๊ณต์œ ํ•˜๋ ค๋ฉด ์Šคํ† ๋ฆฌ์ง€ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผํ•จ
์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๋Š” โ€œ์ผํšŒ์šฉ ๋„์‹œ๋ฝํ†ตโ€, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๋ ค๋ฉด โ€œ๋ƒ‰์žฅ๊ณ (๋ณผ๋ฅจ)โ€์— ๋ณด๊ด€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ

2. ์Šคํ† ๋ฆฌ์ง€ ๋ฐฉ์‹

1) ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ (Bind Mount)

โ€ข
ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ์— ์ง์ ‘ ์—ฐ๊ฒฐ
โ€ข
๊ฐœ๋ฐœ ์‹œ ์ฝ”๋“œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ˜์˜๋˜์–ด ํŽธ๋ฆฌํ•จ
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d -v /host/data:/container/data <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ
โ€ข
/host/data : ๋งˆ์šดํŠธ ํ•  ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ
โ€ข
/container/data : ๋งˆ์šดํŠธํ•  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ

2) ๋ณผ๋ฅจ (Volume)

โ€ข
Docker๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋Š” ์ „์šฉ ์Šคํ† ๋ฆฌ์ง€
โ€ข
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋˜๋ฏ€๋กœ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ๊ถŒ์žฅ๋จ
docker volume create <๋ณผ๋ฅจ๋ช…> docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> -d -v <๋ณผ๋ฅจ๋ช…>:/app/data <์ด๋ฏธ์ง€๋ช…> docker volume ls docker volume inspect <๋ณผ๋ฅจ๋ช…>
Bash
๋ณต์‚ฌ

3) tmpfs ๋งˆ์šดํŠธ

โ€ข
๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ(RAM) ์— ์ €์žฅ, ๋””์Šคํฌ์—๋Š” ๋‚จ์ง€ ์•Š์Œ
โ€ข
์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง
โ€ข
์ž„์‹œ ์บ์‹œ๋‚˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•จ
docker run -d --tmpfs /app/cache --name <์ปจํ…Œ์ด๋„ˆ๋ช…> <์ด๋ฏธ์ง€๋ช…>
Bash
๋ณต์‚ฌ

3. ์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„(Storage Driver)

โ€ข
Docker๋Š” ์ปจํ…Œ์ด๋„ˆ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„(overlay2 ๋“ฑ) ๋กœ ๊ด€๋ฆฌํ•จ
โ—ฆ
overlay2 ๊ฒฝ๋กœ : /var/lib/docker/overlay2
โ€ข
Copy-on-Write(CoW) ๋ฐฉ์‹์„ ์‚ฌ์šฉ โ†’ ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ ํ•˜๋‹ค๊ฐ€ ์ˆ˜์ •์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ๋ณต์‚ฌํ•จ
โ€ข
๋•๋ถ„์— ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

4. ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค

1.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปจํ…Œ์ด๋„ˆ โ†’ ๋ฐ˜๋“œ์‹œ ๋ณผ๋ฅจ ์‚ฌ์šฉ
2.
๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ ๊ณต์œ  โ†’ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ํ™œ์šฉ
3.
๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ/์ž„์‹œ ๋ฐ์ดํ„ฐ โ†’ tmpfs ์‚ฌ์šฉ
4.
๋ฐฑ์—… ์‹œ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋ฅผ tar ํŒŒ์ผ๋กœ ์ถ”์ถœ
docker run --name <์ปจํ…Œ์ด๋„ˆ๋ช…> --rm -v <๋ณผ๋ฅจ๋ช…>:/data -v /backup:/backup <์ด๋ฏธ์ง€๋ช…> tar cvf /backup/data.tar /data
Bash
๋ณต์‚ฌ

ํ•ต์‹ฌ ์š”์•ฝ

โ€ข
์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€๋Š” ํœ˜๋ฐœ์„ฑ โ†’ ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ ์†์‹ค
โ€ข
๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ = ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ณต์œ  (๊ฐœ๋ฐœ์šฉ)
โ€ข
๋ณผ๋ฅจ = Docker ๊ด€๋ฆฌ ์Šคํ† ๋ฆฌ์ง€ (์šด์˜์šฉ, ๋ฐ์ดํ„ฐ ๋ณด์กด)
โ€ข
tmpfs = ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€ (๋ณด์•ˆ/์ž„์‹œ)
โ€ข
์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„ = Copy-on-Write ๋ฐฉ์‹