[Docker] ๋„์ปค ๋ณผ๋ฅจ ์ดํ•ด์™€ Bind mount, docker volume ๋ฐฉ์‹์˜ ๋ณผ๋ฅจ ๊ธฐ๋ฒ• | MySQL volume ์—ฐ๊ฒฐ, Nginx volume ์—ฐ๊ฒฐ

Volume ๊ธฐ์ˆ  ์ดํ•ด

Docker์—์„œ ์ œ๊ณตํ•˜๋Š” volume ๊ธฐ์ˆ ์€ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒ์„ฑ๋˜๊ณ  ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€, ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ญ์ œ๋˜์–ด๋„ volume์€ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

 

 

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

 

 

Volume 3๊ฐ€์ง€ ๋ฐฉ์‹

 

1. Bind Mount

  • Bind mount ๊ธฐ๋ฒ•์€ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ๋„ mount ๊ฐ€๋Šฅํ•˜๋‹ค.
  • "ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ˆ๋Œ€๊ฒฝ๋กœ" : "์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ"  ๋ฅผ ์ง์ ‘ mountํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ง€์ •ํ•œ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ˆ๋Œ€๊ฒฝ๋กœ๊ฐ€ ๊ธฐ์กด์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋ฉด ํ•ด๋‹น ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์†Œ์œ ์ž ๊ถŒํ•œ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์ž๋™ ์ƒ์„ฑ๋˜๊ธด ํ•˜์ง€๋งŒ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ฃจํŠธ(root)์‚ฌ์šฉ์ž ์†Œ์œ ๊ฐ€ ๋œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ ์‹œ Bind mount๊ฐ€ ์ž๋™ ํ•ด์ œ๋˜์ง€๋งŒ ์ƒ์„ฑ๋œ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ(file)์€ ๋ณด์กด๋œ๋‹ค.

 

2. Docker volume

  • DOcker์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ "docker volume create ๋ณผ๋ฅจ๋ช…" ์œผ๋กœ ๋ณผ๋ฅจ์„ ์ƒ์„ฑ
  • docker volume๋ช…๋ น์–ด๋Š” /var/lib/docker ์˜์—ญ์— volume ์˜์—ญ์„ ๋งŒ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ์™€ ์—ฐ๊ฒฐ(mount) ํ•œ๋‹ค.
  • docker volume์€ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋ฅผ Docker๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ex) docker volume ์‚ฌ์šฉ ์˜ˆ์‹œ
~$ docker volume create my-volume 
~$ docker run .. -v my-volume:/app ..

 

 

 

MySQL ์ปจํ…Œ์ด๋„ˆ Volume์—ฐ๊ฒฐ

  • mysql ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ bind mount ๊ธฐ๋ฒ•์œผ๋กœ volume ์ƒ์„ฑ
~$ docker run –itd --name=mydb -e MYSQL_ROOT_PASSWORD=pass123# \ 
> -e MYSQL_DATABASE=fastcampus \ 
> -v ${PWD}/mydb-data:/var/lib/mysql \ 
> mysql:5.7-debian

 

Nginx ์ปจํ…Œ์ด๋„ˆ Volume์—ฐ๊ฒฐ

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

 

  • volume์„ ์—ฐ๊ฒฐํ•  host ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
~$ mkdir -p /home/kevin/nginx-log

 

  • nginx ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ฐ ๋งŒ๋“ค์–ด์ง„ host ๋””๋ ‰ํ† ๋ฆฌ์™€ volume ์—ฐ๊ฒฐ
~$ docker run -d --name=myweb -v /home/kevin/nginx-log:/var/log/nginx p 8011:80 nginx:1.25.0-alpine