Docker ํ•™์Šต, 6๋ถ€: ๋ฐ์ดํ„ฐ ์ž‘์—…

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

โ†’ 1๋ถ€: ๊ธฐ๋ณธ์‚ฌํ•ญ
โ†’ 2๋ถ€: ์šฉ์–ด ๋ฐ ๊ฐœ๋…
โ†’ 3๋ถ€: Dockerfile
โ†’ 4๋ถ€: ์ด๋ฏธ์ง€ ํฌ๊ธฐ ์ค„์ด๊ธฐ ๋ฐ ๋นŒ๋“œ ์†๋„ ํ–ฅ์ƒ
โ†’ 5๋ถ€: ๋ช…๋ น
โ†’ 6๋ถ€: ๋ฐ์ดํ„ฐ ์ž‘์—…

Docker ํ•™์Šต, 6๋ถ€: ๋ฐ์ดํ„ฐ ์ž‘์—…

๋ณธ ์ž๋ฃŒ๋Š” Docker ์—”์ง„ ๋ฒ„์ „ 18.09.1๊ณผ API ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Œ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. 1.39.

Docker์˜ ๋ฐ์ดํ„ฐ๋Š” ์ž„์‹œ ๋˜๋Š” ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ž„์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ

Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„์‹œ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ๋ผ์ง„ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜๊ตฌ ๋ฐ์ดํ„ฐ ์ €์žฅ

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

Docker ํ•™์Šต, 6๋ถ€: ๋ฐ์ดํ„ฐ ์ž‘์—…
tmpfs ๋งˆ์šดํŠธ ๋ฐ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ

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

๋„์ปค ๋ณผ๋ฅจ

๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์˜ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Docker๋Š” ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Docker ๋ณผ๋ฅจ์˜ ์ฃผ์š” ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋ณด์‹œ๋‹ค์‹œํ”ผ Docker ๋ณผ๋ฅจ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ํ›Œ๋ฅญํ•œ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค.

๋ณผ๋ฅจ ์ƒ์„ฑ

Docker ๋˜๋Š” API ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” Dockerfile ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

VOLUME /my_volume

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

JSON ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ Dockerfile์— ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น์ค„์—์„œ ๋ณผ๋ฅจ ์ž‘์—…

โ–๋ณผ๋ฅจ ์ƒ์„ฑ

๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋…๋ฆฝํ˜• ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker volume create โ€”-name my_volume

โ–๋ณผ๋ฅจ ์ •๋ณด ์•Œ์•„๋ณด๊ธฐ

Docker ๋ณผ๋ฅจ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

docker volume ls

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ๋ณผ๋ฅจ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker volume inspect my_volume

โ–๋ณผ๋ฅจ ์‚ญ์ œ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker volume rm my_volume

์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker volume prune

๋ณผ๋ฅจ์„ ์‚ญ์ œํ•˜๊ธฐ ์ „์— Docker๋Š” ์ด ์ž‘์—…์„ ํ™•์ธํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋ณผ๋ฅจ์ด ์ปจํ…Œ์ด๋„ˆ์™€ ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋  ๋•Œ๊นŒ์ง€ ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜๋”๋ผ๋„ Docker๋Š” ์ด๋ฅผ ํ•ญ์ƒ ์ดํ•ดํ•˜์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker system prune

Docker ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•œ ํ›„์—๋Š” ์ด์ „์— ์ƒํƒœ๊ฐ€ ์ž˜๋ชป ํ™•์ธ๋œ ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--mount ๋ฐ --volume ํ”Œ๋ž˜๊ทธ

๋ณผ๋ฅจ ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ๋ช…๋ น์„ ํ˜ธ์ถœํ•  ๋•Œ docker, ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ์ค‘์— ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

๊ณ ๋Œ€์—๋Š”(2017๋…„๊นŒ์ง€) ์ด ๊นƒ๋ฐœ์ด ์ธ๊ธฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. --volume. ์ฒ˜์Œ์—๋Š” ์ด ํ”Œ๋ž˜๊ทธ(์ถ•์•ฝ๋œ ํ˜•์‹์œผ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. -v)์€ ๋…๋ฆฝํ˜• ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ํ”Œ๋ž˜๊ทธ๋Š” --mount - Docker Swarm ํ™˜๊ฒฝ์—์„œ. ๊ทธ๋Ÿฌ๋‚˜ Docker 17.06๋ถ€ํ„ฐ ํ”Œ๋ž˜๊ทธ๋Š” --mount ์–ด๋–ค ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•  ์ ์€ --mount ๋ช…๋ น์— ์ง€์ •ํ•ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๋กœ ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. --volume. ๊นƒ๋ฐœ --mount - ์ด๋Š” ์„œ๋น„์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ํ”Œ๋ž˜๊ทธ๋Š” ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

Docker์—์„œ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋ช…๋ น์˜ ๊ธฐ์กด ์˜ˆ์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์˜ˆ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -v. ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์ง์ ‘ ์ ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”. --mount ะธ --volume ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹จ์ˆœํžˆ ๊ต์ฒดํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. -v ์— --mount ๊ทธ๋ฆฌ๊ณ  ์ผํ•˜๋Š” ํŒ€์„ ๊ตฌํ•˜์„ธ์š”.

์ฃผ์š” ์ฐจ์ด์ ์€ --mount ะธ --volume ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์ธ๊ฐ€์š”? --volume ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•˜๋‚˜์˜ ํ•„๋“œ์— ํ•จ๊ป˜ ์ˆ˜์ง‘๋˜๋ฉฐ ์‚ฌ์šฉ ์‹œ --mount ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ž‘์—…ํ•  ๋•Œ --mount ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. key=value. ์ด๋Ÿฌํ•œ ์Œ์€ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. --mount:

  • type โ€” ์žฅ์ฐฉ ์œ ํ˜•. ํ•ด๋‹น ํ‚ค์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ”์ธ๋”ฉ, ์Œ๋Ÿ‰ ๋˜๋Š” tmpfs. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋ณผ๋ฅจ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์šฐ๋ฆฌ๋Š” ์˜๋ฏธ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค volume.
  • source โ€” ๋งˆ์šดํŠธ ์†Œ์Šค. ๋ช…๋ช…๋œ ๋ณผ๋ฅจ์˜ ๊ฒฝ์šฐ ์ด๋Š” ๋ณผ๋ฅจ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๋ณผ๋ฅจ์˜ ๊ฒฝ์šฐ ์ด ํ‚ค๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹จ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. src.
  • destination โ€” ํŒŒ์ผ ๋˜๋Š” ํด๋”๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธ๋˜๋Š” ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹จ์ถ•๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dst ๋˜๋Š” target.
  • readonly - ์˜๋„ํ•œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ. ์ด ํ‚ค๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ํ• ๋‹น๋œ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‚ฌ์šฉ ์˜ˆ์ž…๋‹ˆ๋‹ค. --mount ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

๊ฒฐ๊ณผ

Docker ๋ณผ๋ฅจ ์ž‘์—… ์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

๋‹ค์Œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. --mount, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์— ์ ์šฉ ๊ฐ€๋Šฅ docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

์ด์ œ ์ด Docker ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ์œผ๋ฏ€๋กœ Docker ํ•™์Šต์ž๊ฐ€ ๋‹ค์Œ์— ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— Docker์— ๊ด€ํ•œ ์ข‹์€ ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— Docker์— ๊ด€ํ•œ ์ฑ…(์ด ์ฑ…์„ ๊ตฌ์ž…ํ•  ๋•Œ ์ตœ์‹ ํŒ์„ ๊ตฌํ•˜์„ธ์š”). ์—ฌ๊ธฐ์— ์‹ค์Šต์ด ๊ธฐ์ˆ ์„ ๋ฐฐ์šฐ๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ฏฟ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ ํ•ฉํ•œ ๋˜ ๋‹ค๋ฅธ ์ฑ…์ž…๋‹ˆ๋‹ค.

๋…์ž ์—ฌ๋Ÿฌ๋ถ„! Docker์— ๋Œ€ํ•ด ์ดˆ๋ณด์ž๊ฐ€ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์€ ์ž๋ฃŒ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

Docker ํ•™์Šต, 6๋ถ€: ๋ฐ์ดํ„ฐ ์ž‘์—…

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€